通過(guò)JAVA 中反射機(jī)制及Method的invoke實(shí)現(xiàn)動(dòng)態(tài)類(lèi)方法的動(dòng)態(tài)調(diào)用
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class MethodInvokeTest {
public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {
String [] methods ={"pig","chicken","cat","dog"};
Class animal = Animal.class; //得到Animal類(lèi)對(duì)象, 注意類(lèi)本身也是一個(gè)對(duì)象
for(String m:methods){
Method method = animal.getMethod(m);//獲得animal對(duì)象所聲明的公開(kāi)方法 m 給method
method.invoke(animal.newInstance()); //執(zhí)行animal對(duì)象的method方法
}
}
}
class Animal{
public void dog(){
System.out.println("可愛(ài)的小狗");
}
public void cat(){
System.out.println("漂亮的小貓");
}
public void pig(){
System.out.println("憨憨的小豬");
}
public void chicken(){
System.out.println("嘎嘎嘎的小雞");
}
}執(zhí)行結(jié)果如下:
憨憨的小豬
嘎嘎嘎的小雞
漂亮的小貓
可愛(ài)的小狗
