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. java语句顺序有时非常重要

    我们学习java时,通常被告知,变量定义的顺序不重要,可是下面程序确在jdk 1.7上执行出错. public class FactoryImpl implements Serializable { ...

  2. 【Android开发-8】生命周期,Activity中打开另外一个Activity

    前言:生命中有很多人陪伴自己走过一生中的某段旅程,仅仅是有些人仅仅是某阶段出现,有些人却陪伴自己非常久.就像小学.中学.高中.大学,那些以前以为会长久拥有的,当经历过天涯各地地忙碌于生活,或如意.或失 ...

  3. 用Qt编写的计算文件MD5值的Demo

    Dialog.ui <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0& ...

  4. node-sass 安装失败win32-x64-48_binding.node

    升级了nodejs的版本,原项目的node-sass模块启动安装不了. 下载对应的win32-x64-xx_binding.node https://github.com/sass/node-sass ...

  5. IDEA中Git的应用场景

    工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程git仓库上获取项目源码 场景三:小 ...

  6. UVAlive 6611 Alice's Print Service 二分

    Alice is providing print service, while the pricing doesn't seem to be reasonable, so people using h ...

  7. SDUT 周赛 神奇的树(简单题 注意数据类型的溢出 )

    神奇的树 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 SDUT有一颗神奇的苹果树.假如某天早上这树上有x个苹果,那么这树这一天 ...

  8. Linux系统CentOS下mysql的安装日志

    今天自己捣鼓了一下,在linux系统CentOs6.5下使用源码方式安装和配置mysql,这里记录一下步骤. a) 下载mysql,source版本.Mysql-5.6.20.tar.gz b) 安装 ...

  9. UVA-11462 (计数排序)

    题意: 2e6个数,按从小到大的顺序输出; 思路: 计数排序; AC代码: #include <bits/stdc++.h> /* #include <vector> #inc ...

  10. 【POJ 2406】 Power Strings

    [题目链接] 点击打开链接 [算法] KMP 如果字符串中存在循环节,则next[len] = (循环节个数 - 1) * 循环节长度 循环节个数 = len / (len - next[len]) ...