`
Fecoly
  • 浏览: 7190 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java反射

阅读更多
public void gets(Class<?> clazz) throws Exception {
Object e=clazz.newInstance(); //实例化对象
// 获取字段
java.lang.reflect.Field[] fies = clazz.getDeclaredFields(); // 获得全部字段
java.lang.reflect.Field[] pubFies = clazz.getFields(); // 获得全部公有字段
System.out.println("全部字段个数:" + fies.length + "\n公有字段个数:"
+ pubFies.length);
for (int i = 0; i < fies.length; i++) {
fies[i].setAccessible(true); // 设置私有字段为外部可访问
System.out.println(javassist.Modifier.toString(fies[i]
.getModifiers())
+ " "
+ fies[i].getType()
+ " "
+ fies[i].getName() + "=" + fies[i].get(e));
}
// 获取方法
// java.lang.reflect.Method[] mss = clazz.getMethods(); //
// 获取全部方法,含继承的方法
java.lang.reflect.Method[] mss = clazz.getDeclaredMethods(); // 获取全部方法,不包含继承的方法
for (int i = 0; i < mss.length; i++) {
Class<?>[] ps = mss[i].getParameterTypes(); // 获取参数类型
String modifier = javassist.Modifier
.toString(mss[i].getModifiers()); // 获取修饰符
Class<?> returnVal = mss[i].getReturnType(); // 获取返回类型
System.out.print("修饰符:" + modifier + "返回类型:" + returnVal.getName()
+ "方法名:" + mss[i].getName() + "参数类型:");
Object[] parameters = new Object[ps.length];
for (int j = 0; j < ps.length; j++) {
System.out.print(ps[j].getName() + ",");
if (ps[j].getName().equals("int")
|| ps[j].getName().equals("double")
|| ps[j].getName().equals("long")) { //设置参数(要排除基本类型,基本类型不能用newInstance)
parameters[j] = 1;
} else {
parameters[j] = ps[j].newInstance();
}

}
System.out.print("\n");
if (modifier.equalsIgnoreCase("public")) {
java.lang.reflect.Method m = clazz.getMethod(
mss[i].getName(), ps); // 获得某一方法,ps为参数数据类型数组
// if (ps.length == 0) {
System.out.println("执行结果:" + m.invoke(e, parameters));
// }
}

}
// 获得构造器
java.lang.reflect.Constructor<?>[] cs = clazz.getConstructors();
for (int i = 0; i < cs.length; i++) {
System.out.print(" 构造器" + (i + 1) + " 参数类型:");
Class<?>[] pcs = cs[i].getParameterTypes();
for (int j = 0; j < pcs.length; j++) {
System.out.print("  " + pcs[j].getName());
}
}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics