Java-方法反射的基本操作

2022-10-31 15:56:04 浏览数 (1)

代码语言:javascript复制
public class ClassDemo2 {
    /**
     * @Author: www.itze.cn
     * @Date: 2020/9/21 10:37
     * @Email: 814565718@qq.com
     */
    public static void main(String[] args) {
        /**
         * 要获取一个方法,就是获取一个类的信息,要获取类,就要先获取该类的类类型
         */
        A a = new A();
        Class<? extends A> aClass = a.getClass();
        /**
         * 获取方法
         * getMethod()获取的时所有public的方法
         * getDelcaredMethod()获取的时自己声明的方法
         */
        try {
            Method aClassDeclaredMethod = aClass.getMethod("print", new Class[]{int.class, int.class});
            /**
             * 方法的发射
             * 见到参数中出现...可以使用该类型的数组形式或者直接参数形式
             */
            //正常调用 a.print();
            aClassDeclaredMethod.invoke(a, new Object[]{1, 1});
            System.out.println("========================");
            Method method = aClass.getMethod("print", String.class, String.class);
            method.invoke(a, "hello", "Word");
            /**
             * 无参调用也是两种方式,
             * 方式一:getMethod("方法名","new Class[]{}")
             * 方式二:getMethod("方法名")
             */
            Method priMethod = aClass.getMethod("print");
            priMethod.invoke(a);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class A {
    public void print() {
        System.out.println("This No Param Method");
    }

    public void print(int a, int b) {
        System.out.println(a   b);
    }

    public void print(String a, String b) {
        System.out.println(a.toUpperCase()   ","   b.toLowerCase());

    }
}

0 人点赞