JAVA反射测试

/***************************测试时调用的函数资源*****************************************/ package com.test.reflect; public class MethodClass { public int myA; public int myB; private int myC; private int myD; //打印A public String printA(String inStr){ print("函数printA 执行开始!"); print(inStr); print("函数printA 执行完毕!"); return "这是printA函数的执行结果!"; } //打印B public void printB(String inStr){ print(inStr); } //打印C public void printC(String inStr){ print(inStr); } //打印函数 public void print(String inStr){ System.out.println(inStr); } } 

 

/******************测试类,获取上个类的所有属性和函数名称,指定一个函数名称并执行打印返回结果*************************************/ package com.test.reflect; import java.lang.reflect.Field; import java.lang.reflect.Method; public class InvokeMethod { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { Class typeClass = Class.forName("com.test.reflect.MethodClass");// 绿色表示包和类名,要把该文件放在该工程下的lib文件夹下 // 取得方法名称 Method[] method = typeClass.getMethods(); for (int i = 0; i < method.length; i++) { // 用class的getMethods()获得所有函数名称 System.out.println(method[i].getName()); } // 取得公有属性名称 Field[] fields = typeClass.getFields(); for (int i = 0; i < fields.length; i++) { System.out.println(fields[i].getName()); } // 取得私有属性名称 Field[] fields2 = typeClass.getDeclaredFields(); for (int i = 0; i < fields2.length; i++) { System.out.println(fields2[i].getName()); } // 动态实例化 调用方法 Object object = typeClass.newInstance(); // 取得add方法(1) Method addMethod = typeClass.getMethod("printA", String.class);// 参数1:方法名 // 参数2:函数接受参数类型 // 执行方法实例的invoke,返回结果 Object res = addMethod.invoke(object, "动态执行printA函数");// 参数1:类的实例// 参数2:要执行函数的输入参数 System.out.println("执行指定函数的结果为:"+res); } catch (Exception e) { e.printStackTrace(); } } } 

你可能感兴趣的:(JAVA,java,string,object,exception,class,测试)