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 ...
随机推荐
- javascript模块化编程:CommonJS和AMD规范
AMD规范,异步模块定义.与CommonJS规范齐名并列. 作用都是利于JavaScript的模块化编程. 模块化编程的好处就是: 1.可重用 2.独立 3.能解决加载的依赖性问题 4.能解决重复加载 ...
- 文件宝局域网传输/播放功能使用帮助(Mac电脑用户)
使用局域网账户密码登录,可以访问电脑上所有文件 使用游客无账户密码登录,只能访问电脑上指定共享文件夹的文件. 怎么设置共享文件夹请参考: 1.打开“共享”偏好设置(选取苹果菜单 >“系统偏好设置 ...
- android支付
这里不讲具体的某个平台的支付使用,在工作中,公司使用到了ping++支付,使用它的好处是可以不用关心某个平台的支付了,例如:微信支付.支付宝支付等,太多的平台有个整合,是一个很好的事情,当然这也减轻了 ...
- socketIO原理图
- springboot实现定时任务的两种方式
方式一:在springboot启动类上添加@EnableScheduling注解,然后创建具体的任务类,在方法上添加@Scheduled注解,并指明执行频率即可.如下: @Componentpubli ...
- [原创]java实现word转pdf
最近遇到一个项目需要把word 转成pdf,百度了一下网上的方案有很多,比如虚拟打印.给word 装扩展插件等,这些方案都依赖于ms word 程序,在java代码中也得使用诸如jacob或jcom这 ...
- ssl原理及应用
今天学习网络通信,看到使用ssl(Secure Sockets Layer)进行加密,由于对ssl只是有些概念上的了解,对于具体应用原理.过程和如何使用不慎了解,于是学习了一番,总结如下: 1. 为什 ...
- [Selenium] 应对使用 Internet Explorer Driver 多个实例时的 cookie 共享问题
在使用 IEDriverServer 可执行文件时,从理论上来说是可通过它来创建并使用多个同时存在的 Internet Explorer Driver 实例的.但在实际使用过程中,总是会碰到与 coo ...
- 【AMPPZ 2014】 The Captain
[题目链接] 点击打开链接 [算法] 按x轴排序,将相邻点连边 按y轴排序,将相邻点连边 然后对这个图跑最短路就可以了,笔者用的是dijkstra算法 [代码] #include<bits/st ...
- bzoj1003物流运输——DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1003 DP好题: 直接找一个时间段的最短路,并用它来预处理出每个时间段的最小花费: f[i] ...