Java之路-反射2:调用方法、构造方法和继承关系
一、调用方法
Class类主要通过以下方法获取Method
Method getMethod(name, Class...):获取某个public的Method(包括父类)
Method getDeclaredMethod(name, Class...):获取当前类的某个Method(不包括父类)
Method[] getMethods():获取所有public的Method(包括父类)
Method[] getDeclaredMethods():获取当前类的所有Method(不包括父类)
每个Method类包含一下获取Method类信息的方法
getName():返回方法名称,例如:"getScore";
getReturnType():返回方法返回值类型,也是一个Class实例,例如:String.class;
getParameterTypes():返回方法的参数类型,是一个Class数组,例如:{String.class, int.class};
getModifiers():返回方法的修饰符,它是一个int,不同的bit表示不同的含义。
此外通过Method实例可以调用某个对象的方法:Object invoke(Object instance, Object... parameters);
二、调用构造方法
Class实例获取Constructor的方法有:getConstructor(Class...):获取某个public的Constructor;
getDeclaredConstructor(Class...):获取某个Constructor;
getConstructors():获取所有public的Constructor;
getDeclaredConstructors():获取所有Constructor。
Constructor实例可以通过newInstance(Object... parameters)创建一个实例对象
三、获取继承关系
获取到某个Class对象的方法有:
//获取到String的Class
Class cls = String.class; //class java.lang.String
//s是String,因此获取到String的Class
String s = "";
Class cls2 = s.getClass(); //class java.lang.String
Class cls3 = Class.forName("java.lang.String");//class java.lang.String
Class getSuperclass():获取父类类型;
Class[] getInterfaces():获取当前类实现的所有接口。
通过Class对象的isAssignableFrom()方法可以判断一个向上转型是否可以实现。