程序员我的javaSE

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

2018-03-23  本文已影响0人  冒险小A

步骤:

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

概述:

class类中常用方法:

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

运行结果:

运行结果
上一篇 下一篇

猜你喜欢

热点阅读