java利用反射来调用一个类的私有方法和成员变量
2013-10-01 23:53
731 查看
因项目需要反射一个类的所有方法和成员,所以查了jdk文档,写了个测试程序
public class BeanUtils { public static void printMethods(String className) throws ClassNotFoundException { Class<?> classType = Class.forName(className); Method[] methods = classType.getDeclaredMethods(); StringBuilder log = new StringBuilder(); for (Method method : methods) { log.append(method.getReturnType().getName() + " " + method.getName()); Class<?>[] parameterTypes = method.getParameterTypes(); log.append("("); if (parameterTypes != null && parameterTypes.length > 0) { for (int i = 0; i < parameterTypes.length - 1; ++i) { Class<?> clas = parameterTypes[i]; String parameterName = clas.getName(); log.append(parameterName + ", "); } Class<?> clas = parameterTypes[parameterTypes.length - 1]; String parameterName = clas.getName(); log.append(parameterName); } log.append(")\n"); } log.append("*****************************"); System.out.println(log); } public static void printFields(String className) throws ClassNotFoundException { Class<?> classType = Class.forName(className); Field[] fields = classType.getDeclaredFields(); StringBuilder log = new StringBuilder(); for (Field field : fields) { // System.out.println(field); log.append(field.getName()).append("\n"); } log.append("*****************************"); System.out.println(log); } }
public class BeanUtilsTest { @Test public void testPrintMethods() { String clsName = "java.lang.String"; try { BeanUtils.printMethods(clsName); assertTrue(true); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); assertTrue(false); } } @Test public void testPrintFields() { String clsName = "java.lang.String"; try { BeanUtils.printFields(clsName); assertTrue(true); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); assertTrue(false); } } }
相关文章推荐
- java利用反射来调用一个类的私有方法
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- 一个在java运行时利用反射动态调用方法的例子
- java中利用反射机制得到一个类的所有构造方法,成员方法机器参数的列表
- Java通过反射访问私有成员变量和私有方法
- Java学习笔记_反射_Class.forName()加载并修改一个类的私有成员变量
- 待补充:java类里的私有变量问题,在对象A里有一个对象B,调用对象B的方法获取变量,会有短暂的缓存
- JavaSE第六十四讲:使用反射机制调用对象的私有方法、访问对象的私有成员变量
- 论java之反射机制,访问类中私有变量,调用私有方法
- 黑马程序员--Java基础加强--16.利用反射操作泛型V【通过Constructor反射解析泛型构造方法】【通过Field反射解析泛型成员变量】【个人总结】
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- 通过反射,如何操作私有成员变量(取/赋值),如何调用私有方法?
- Java笔记——利用反射机制获取成员变量及成员方法
- 利用java的反射机制调用类的私有方法及私有属性
- java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。
- 类反射学习(三) JAVA如何利用类反射调用普通函数、访问成员成员变量
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- 【转】【Java】利用反射技术,实现对类的私有方法、变量访问