Java Method的invoke实现动态调用

时间:2021-05-14 16:25:49 类型:JAVA
字号:    

通过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("嘎嘎嘎的小鸡");
    }
}

执行结果如下:

憨憨的小猪

嘎嘎嘎的小鸡

漂亮的小猫

可爱的小狗


<