java反射動態方法調用

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/*
 * 方法的調用
 */
public class CallMethod {

	public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
		
		Class invokeTesterClass=Class.forName("InvokeTester");
		
		//相當於Object obj= new InvokeTester();
		Object obj=invokeTesterClass.newInstance(); 
		
		//這裏的String.class是指echo方法的參數類型
		Method method=invokeTesterClass.getDeclaredMethod("echo",String.class);

		String result=(String)method.invoke(obj, "java");
		
		System.out.println(result);

	}

}

class InvokeTester {

	public int add(int param1, int param2) {
		return param1 + param2;
	}

	public String echo(String msg) {
		return "echo:" + msg;
	}
	
	public String echo() {
		return "echo";
	}
}

輸出:echo:java

Class<?> c = Class.forName("類名");  
Class<?>[] paraTypes = new Class[]{para1.class, para2.class};  
Object[] paraValues = new Object[]{para1, para2};  
Method m = c.getMethod("方法名", paraTypes);  
return (Boolean) m.invoke(c.newInstance(), paraValues); 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章