package testReflect;
import java.lang.reflect.*;
public class TestReflect {
public int add(int param1,int param2){
return param1+param2;
}
public String echo(String msg){
return "echo:"+msg;
}
public static void main(String[] args) throws Exception{
Class<TestReflect> classType=TestReflect.class;
Object invokeTester=classType.newInstance();
//调用InvokeTester对象的add()方法
Method addMethod=classType.getMethod("add",new Class[]{int.class,int.class});
Object result=addMethod.invoke(invokeTester,new Object[]{new Integer(100),new Integer(200)});
System.out.println((Integer)result);
//调用InvokeTester对象的echo()方法
Method echoMethod=classType.getMethod("echo",new Class[]{String.class});
result=echoMethod.invoke(invokeTester,new Object[]{"Hello"});
System.out.println((String)result);
}
}
Method类的invoke(Object obj, Object args[])方法用于动态执行一个对象的特定方法。
第一个obj 参数指定具有该方法的对象;
第二个args 参数指定向该方法传递的参数,该参数必须为对象,如果参数为基本类型数据,必须转换为相应的包装类型的对象;
invoke()方法的返回值总是对象,如果实际被调用的方法的返回类型是基本类型数据,那么invoke()方法会把它转换为相应的包装类型的对象,再将其返回。