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 反向工具类的更多相关文章

  1. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

  2. Java json工具类,jackson工具类,ObjectMapper工具类

    Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...

  3. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  4. Java并发工具类 - CountDownLatch

    Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...

  5. MinerUtil.java 爬虫工具类

    MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...

  6. MinerDB.java 数据库工具类

    MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...

  7. 小记Java时间工具类

    小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...

  8. Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie

    Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...

  9. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

随机推荐

  1. 给EasyUi的Form加入自己主动填充部分输入框的方法

    依据项目须要,基于获取的数据对Form的部分输入框进行填充,而默认的EasyUI的Form 没有该方法.仅仅能一个输入框一个输入框的直接赋值,为此添加了Form对象的setValues,实现依据给定的 ...

  2. IOS------Warning

    本文转载至 http://blog.csdn.net/shijiucdy/article/details/8755667 处理警告: 1,Validate Project Settings(updat ...

  3. Codeforces 8VC Venture Cup 2016 - Elimination Round F. Group Projects 差分DP*****

    F. Group Projects   There are n students in a class working on group projects. The students will div ...

  4. hadoop配置错误总结

    2016-06-02 17:33:04,163 ERROR org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: RECEIVE ...

  5. HDU3081 Marriage Match II —— 传递闭包 + 二分图最大匹配 or 传递闭包 + 二分 + 最大流

    题目链接:https://vjudge.net/problem/HDU-3081 Marriage Match II Time Limit: 2000/1000 MS (Java/Others)    ...

  6. UVA11270 Tiling Dominoes —— 插头DP

    题目链接:https://vjudge.net/problem/UVA-11270 题意: 用2*1的骨牌填满n*m大小的棋盘,问有多少种放置方式. 题解: 骨牌类的插头DP. 1.由于只需要记录轮廓 ...

  7. poj 2531 Network Saboteur 解题报告

    题目链接:http://poj.org/problem?id=2531 题目意思:将 n 个点分成两个部分A和B(也就是两个子集啦), 使得子集和最大(一定很难理解吧,呵呵).举个例子吧,对于样例,最 ...

  8. 一步一步学Silverlight 2系列(14):数据与通信之WCF

    一步一步学Silverlight 2系列(14):数据与通信之WCF   概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框 ...

  9. re(正则表达式)模块

    一.最常用的匹配语法 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.split  以匹配到的字符当做列表分隔符 r ...

  10. [NOIP 2018 Day1] 简要题解

    [题目链接] 铺设道路 : https://www.luogu.org/problemnew/show/P5019 货币系统 : https://www.luogu.org/problemnew/sh ...