java 反向工具类
1.ReflectUtil.java
package com.example.scansell; import android.util.Log; import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter; public class ReflectUtil { private static String getModifier(int i){
switch (i){
case :
case : return "public";
case : return "private";
case : return "public static";
case : return "private static"; case : return "private final";
case : return "public static final";
}
return "" + i;
} public static void printClass(Class clazz){
Log.e("ReflectUtil", "printAllMethods"); Class supper = clazz.getSuperclass();
Class interfaces[] = clazz.getInterfaces();
String data = " \n\n\n---------------------class.info -------------------\n\n";
data += "package = " + clazz.getPackage()
+ "\nname = " + clazz.getName()
+ "\ntypeName = " + clazz.getTypeName()
+ "\nsimpleName = " + clazz.getSimpleName()
+ "\nCanonicalName = " + clazz.getCanonicalName()
+ "\nextends = " + supper.getCanonicalName()
+ "\nimplements [ " + interfaces.length + " ] = ";
for (int i = ; i < interfaces.length; ++i){
Class intfc = interfaces[i];
data += intfc.getCanonicalName() + ( i < interfaces.length - ? "," : "") ;
}
Log.e("ReflectUtil", data + "\n\n\n"); Constructor[] cons = clazz.getDeclaredConstructors();
data = " \n\n\n---------------------所有构造方法 [" + cons.length + "]-------------------\n\n"; for (Constructor constructor : cons){
data += getModifier(constructor.getModifiers()) + "\t" + constructor.getName() + "( ";
Parameter parameters[] = constructor.getParameters();
for (int i = ;i < parameters.length;++i){
Parameter parameter = parameters[i];
data += parameter.getType().getSimpleName() + (i < parameters.length - ? "," : "");
}
data += " )\n";
}
Log.e("ReflectUtil", data + "\n\n\n"); cons = clazz.getConstructors();
data = " \n\n\n---------------------公开构造方法 [" + cons.length + "]-------------------\n\n";
for (Constructor constructor : cons){
data += getModifier(constructor.getModifiers()) + "\t" + constructor.getName() + "( ";
Parameter parameters[] = constructor.getParameters();
for (int i = ;i < parameters.length;++i){
Parameter parameter = parameters[i];
data += parameter.getType().getSimpleName() + (i < parameters.length - ? "," : "");
}
data += " )\n";
}
Log.e("ReflectUtil", data + "\n\n\n"); Method[] methods = clazz.getDeclaredMethods();
data = " \n\n\n---------------------类方法(不含基类) [" + methods.length + "]-------------------\n\n";
for (Method method : methods){
data += getModifier(method.getModifiers()) + "\t" + method.getName() + "( " ;
Parameter parameters[] = method.getParameters();
for (int i = ;i < parameters.length;++i){
Parameter parameter = parameters[i];
data += parameter.getType().getSimpleName() + (i < parameters.length - ? "," : "");
}
data += " )\n";
}
Log.e("ReflectUtil", data + "\n\n\n"); methods = clazz.getMethods();
data = " \n\n\n---------------------类方法(含基类) [" + methods.length + "]-------------------\n\n";
for (Method method : methods){
data += getModifier(method.getModifiers()) + "\t" + method.getName() + "( ";
Parameter parameters[] = method.getParameters();
for (int i = ;i < parameters.length;++i){
Parameter parameter = parameters[i];
data += parameter.getType().getSimpleName() + (i < parameters.length - ? "," : "");
}
data += " )\n";
}
Log.e("ReflectUtil", data + "\n\n\n"); Field[] fields = clazz.getFields();
data = " \n\n\n---------------------类公开属性(含基类) [" + fields.length + "]-------------------\n\n";
for (Field field : fields){
data += getModifier(field.getModifiers()) + "\t" + field.getType().getSimpleName() + "\t" + field.getName() ;
data += "\n";
}
Log.e("ReflectUtil", data + "\n\n\n"); fields = clazz.getDeclaredFields();
data = " \n\n\n---------------------类定义的属性(不含基类) [" + fields.length + "]-------------------\n\n";
for (Field field : fields){
data += getModifier(field.getModifiers()) + "\t" + field.getType().getSimpleName() + "\t" + field.getName() ;
data += "\n";
}
Log.e("ReflectUtil", data + "\n\n\n"); Log.e("ReflectUtil", " printAllMethods : ==========-------=========== =======\n\n\n" );
}
}
ReflectUtil
java 反向工具类的更多相关文章
- Java Properties工具类详解
1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- Java并发工具类 - CountDownLatch
Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...
- MinerUtil.java 爬虫工具类
MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...
- MinerDB.java 数据库工具类
MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...
- 小记Java时间工具类
小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...
- Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie
Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
随机推荐
- struct与 union的基本用法
结构体与联合体是C语言的常见数据类型,可对C的基本数据类型进行组合使之能表示复杂的数据结构,意义深远,是优异代码的必备工具.一. struct与 union的基本用法,在语法上union ...
- 利用WebViewJavascriptBridge与UIWebView进行交互
事情的起因还是因为项目需求驱动.折腾了两天,由于之前没有UIWebView与JS交互的经历,并且觉得这次在功能上有一定的创造性,特此留下一点文字,方便日后回顾. 我要实现这样一个需求:按照本地的CSS ...
- ubuntu12.04配置NFS服务详解
1:安装nfs sudo apt-get install nfs-kernel-server 2:配置服务 sudo vim /etc/exports 在末尾添加 /home/jyg *(rw,syn ...
- 序列化FastReport,重要提示少走弯路 good
原本在开发一个报表插件,因为需要远程传输,因此需要序列化报表,序列化FastReport有两种方式, 1.仅序列化数据,由客户端接受到数据,并呈现报表,这种方式需要在客户端存储报表格式文件xxx.Fr ...
- 关于树论【动态树问题(LCT)】
搬运:看一道caioj1439 题目描述 一开始给你一棵n个点n-1条边的树,每个点有一个权值wi. 三种操作: op=1 u v :在点u和点v之间建一条边. op=2 u v:摧毁点u到点v之间的 ...
- Linux下配置rsync服务器
一.简介 rsync是一个远程数据同步工具,可以快速同步多台主机间的文件.Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都 ...
- Objective-C 中Socket常用转换机制(NSData,NSString,int,Uint8,Uint16,Uint32,byte[])
最近项目中要用到socket通讯,由于涉及到组包问题,所以需要数据类型之间的来回转换,现在分享出来 如果想要请教Socket的问题请留言,我会随时回答的 1. int类型转16进制hexstring ...
- 一步一步学Silverlight 2系列(28):图片处理
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- Android中android:visibility的3中属性的剖析
在Android中控件或者布局的可见性android:visibility有3中情况,他们分别是: View.VISIBLE,View.UNVISIBLE,View.GONE View.VISIBLE ...
- [Selenium] Explicit wait 方法
(1) new WebDriverWait(driver, 10). until(ExpectedConditions.elementToBeClickable(locator)); (2) ne ...