用方法对象进行反射

Posted 彬灵晨夏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用方法对象进行反射相关的知识,希望对你有一定的参考价值。

package com.mysec.reflex;

import java.lang.reflect.Method;

public class MethodDemo {

    public static void main(String[] args) {
        //要获取print(int,int)方法 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型
        A a = new A();
        Class<?> c = a.getClass();
        /**
         * 获取方法名称和参数列表来决定
         * getMethod获取的是public的方法
         * getDeclaredMethods获取的是自己声明的方法
         */
//        c.getDeclaredMethods();
        try {
//            Method method = c.getMethod("print", new Class[]{int.class,int.class});
            Method method = c.getMethod("print",int.class,int.class);//获取方法对象
            //方法的反射操作
//            a.print(1, 2);//方法的反射操作是用method对象来进行方法调用和a.print调用的效果相同
            //如果没有返回值返回null,有返回值返回具体的返回值
            Object o = method.invoke(a, new Object[]{1,2});//用方法进行反射操作
//            Method method2 = c.getMethod("print");
            Method method2 = c.getMethod("print", new Class[]{});
//            method2.invoke(a, new Object[]{});
            method2.invoke(a);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
}

class A{
    public void print(){
        System.out.println("ptint");
    }
    public void print(int a,int b){
        System.out.println(a+b);
    }
    public void print(String a,String b){
        System.out.println(a+b);
    }
}

以上是关于用方法对象进行反射的主要内容,如果未能解决你的问题,请参考以下文章

java的反射机制使用方法

使用反射的方法调用的问题问题,怎么解决

C# 怎样用反射创建的对象的给成员委托实例注册方法

什么是反射机制

python 反射 (自省)

JAVA反射机制