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());
}
}
}
分享到:
相关推荐
java反射 java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
java反射,获取所有属性、方法以及List集合类
java反射java反射java反射java反射java反射
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
Java反射
代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。
Java反射经典实例 Java反射经典实例 Java反射经典实例 Java反射经典实例
这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。... 关键字有:Java Java反射机制 Java反射 Java反射理论 Java反射实例 Java反射例子 反射原理 反射 网络论文 集合 汇总 总结 Class。
在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
java 反射 调用私有方法(有参数私有方法)获取私有属性值
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
java 反射demo
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
java 反射中操作数组 java 反射中操作数组 java 反射中操作数组
Java 反射机制、Java 的类反射机制、Java 反射机制的学习、Java 反射Reflection--运行时生成实例 java反射机制的手册文档
java反射理论及实现
java反射机制原理和反射机制总结!!! java反射机制原理和反射机制总结!!!