反射与泛型--(2)方法调用与继承关系获取

/ Java / 没有评论 / 1642浏览

1、方法信息获取

反射可以Class实例获取引用类型所有相关信息,包括方法信息。假设Class实例为cls,则获取方法信息如下:

获取到的方法信息使用Method实例进行存放,其包含了一个方法的所有信息,如方法名、返回值类型、参数列表类型、修饰符等等。

Method[] methods = cls.getMethods();

for(Method method : methods){
    String name = method.getName();
    Class returnType = method.getReturnType();
    Class[] params = method.getParamterTypes();
    Modifier[] modifiers = method.getModifiers();
}

2、方法调用

获取到的方法信息存放在Method实例中,通过Method实例的invoke方法便可实现方法的调用。

//实例A无参数方法method的调用
Object returnValue = method.invoke(实例A);
//实例A带参数方法method的调用
Object returnValue = method.invoke(实例A,实参列表);

3、构造函数调用

newInstance方法只能调用public访问权限的无参构造函数,为了实现构造函数的灵活调用,通过Constructor实例来存放一个构造方法的所有信息,然后通过Constructor实例的newInstance方法来实例化对象。

// 获取某个public访问权限的构造方法
Constructor constructor = cls.getConstructor(参数列表); 
//获取某个构造方法
Constructor constructor = cls.getDeclaredConstructor(参数列表);
//获取所有public的构造方法
Constructor[] constructors = cls.getConstructors();
//获取所有构造方法
Constructor[] constructors = clsgetDelaredConstructors();

4、继承关系获取