import java.lang.reflect.Method;
public class InvokeTester {
public int add(int param1, int param2) { return param1 + param2; }
public String echo(String mesg) { return "echo" + mesg; }
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 }); //Method類的invoke(Object obj,Object args[])方法接收的參數必須為對象, //如果參數為基本類型資料,必須轉換為相應的封裝類型的對象。invoke()方法的傳回值總是對象, //如果實際被調用的方法的傳回型別是基本類型資料,那麼invoke()方法會把它轉換為相應的封裝類型的對象, //再將其返回 Object result = addMethod.invoke(invokertester, new Object[] { new Integer(100), new Integer(200) }); //在jdk5.0中有了裝箱 拆箱機制 new Integer(100)可以用100來代替,系統會自動在int 和integer之間轉換 System.out.println(result);
Method echoMethod = classType.getMethod("echo", new Class[] { String.class }); result = echoMethod.invoke(invokertester, new Object[] { "hello" }); System.out.println(result); }}