通过JAVA 中反射机制及Method的invoke实现动态类方法的动态调用
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类对象, 注意类本身也是一个对象
for(String m:methods){
Method method = animal.getMethod(m);//获得animal对象所声明的公开方法 m 给method
method.invoke(animal.newInstance()); //执行animal对象的method方法
}
}
}
class Animal{
public void dog(){
System.out.println("可爱的小狗");
}
public void cat(){
System.out.println("漂亮的小猫");
}
public void pig(){
System.out.println("憨憨的小猪");
}
public void chicken(){
System.out.println("嘎嘎嘎的小鸡");
}
}执行结果如下:
憨憨的小猪
嘎嘎嘎的小鸡
漂亮的小猫
可爱的小狗
