范例1:
import java.lang.reflect.Method;
public class InvokeTester{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 classType = InvokeTester.class;
Object invokertester = classType.newInstance();
Method addMethod = classType.getMethod("add",new Class[]{int.class,int.class});
Object result = addMethod.invoke(invokertester,new Object[]{new Integer(100),new Integer(200)});
System.out.println(result);
Method echoMethod = classType.getMethod("echo",new Class[]{String.class});
result = echoMethod.invoke(invokertester,new Object[]{"hello"});
System.out.println(result);
}
}
范例2:
import java.lang.reflect.*;
public class MethodPointerTest{
public static void main(String[] args)throws Exception{
//get method pointers to the square and sqrt methods
Method square = MethodPointerTest.class.getMethod("square",double.class);
Method sqrt = Math.class.getMethod("sqrt",double.class);
//print tables of x- and y-values
printTable(1,10,10,square);
printTable(1,10,10,sqrt);
}
public static double square(double x){
return x*x;
}
public static void printTable(double from,double to,int n,Method f){
//print out the method as table header
System.out.println(f);
double dx = (to-from)/(n-1);
for(double x=from;x<=to;x+=dx){
try{
double y = (Double)f.invoke(null,x);
System.out.printf("%10.4f|%10.4f%n",x,y);
}catch(Exception e){
e.printStackTrace();
}
}
}
}