通过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("嘎嘎嘎的小鸡"); } }
执行结果如下:
憨憨的小猪
嘎嘎嘎的小鸡
漂亮的小猫
可爱的小狗