美文网首页程序员我的javaSE
javaSE使用反射获取类中的方法

javaSE使用反射获取类中的方法

作者: 冒险小A | 来源:发表于2018-03-23 23:17 被阅读0次

    步骤:

    1. 获取方法所在类的字节码对象
    2. 获取类中的方法

    概述:

    class类中常用方法:

    public Method[] getMethods();//获取包括自身和继承过来的所有的public方法
    public Method[] getDeclaredMethods();//获取自身类中所有的方法(不包括继承的,和访问权限无关)
    public Method getMethod(String methodName , class<?>...);//获取指定的public方法
    public Method getDeclaredMethod(String methodName , class<?>...);//获取自身类中指定的方法(不包括继承的,和访问权限无关)
    

    参数:

    • methodName:表示被调用方法的名字
    • class<?>:表示被调用方法的参数的class类型

    代码:

    //类中的方法
    class User {
        public void dowork() {
        }
        public void dowork(String name) {
        }
        private String sayHello(String name, int age) {
            return name + "," + age;
        }
    }
    
    public class GetMethodDemo {
        //获取所有方法
        public static void main(String[] args) throws Exception {
            getAllMethods();
            System.out.println("-------------------------------------");
            getOneMethod();
        }
        private static void getAllMethods() {
            Class clz = User.class;
            //获取包括继承和借口的所有方法
            Method[] ms1 = clz.getMethods();
            for (Method ms : ms1) {
                System.out.println(ms);
            }
            //获取自身的的所有方法
            Method[] ms2 = clz.getDeclaredMethods();
            for (Method ms : ms2) {
                System.out.println(ms);
            }
        }
        
        //获取指定方法
        private static void getOneMethod() throws Exception {
            Class clz = User.class;
            //获取无参数的dowork方法
            Method m = clz.getDeclaredMethod("dowork");
            System.out.println(m);
            //获取有参数的dowork方法
            m = clz.getMethod("dowork",String.class);
            System.out.println(m);
            //获取私有的有参数的sayHello方法
            m = clz.getDeclaredMethod("sayHello",String.class,int.class);
            System.out.println(m);
        }
    }
    

    运行结果:

    运行结果

    相关文章

      网友评论

        本文标题:javaSE使用反射获取类中的方法

        本文链接:https://www.haomeiwen.com/subject/onlfcftx.html