反射
概述:
反射允许对成员变量,成员方法和构造方法的信息进行编程访问;
是从class字节码文件中获取的;
获取Class对象
- Class.forName("全类名");
- 类名.class;
- 对象.getClass();
利用反射获取构造方法:
Class类中用于获取构造方法的方法:
Constructor<?>[] getConstructors() 返回所有公共构造方法对象的数组
Constructor<?>[] getDeclaredConstructors() 返回所有构造方法对象的数组
Constructor<?> getConstructor(Class<?>... parameterTypes) 返回单个公共构造方法对象(参数为类型的Class对象)
Constructor<?> getDeclaredConstructor(Class<?>... parameterTypes) 返回单个构造方法对象
- 获取构造方法里的详细信息的方法(Constructor内的成员方法):
int getModifiers() 获取构造方法的修饰符状态码
Parameters[] getParameters() 获取构造方法中的所有参数
setAccessible(boolean b) 临时取消权限校验,可以让newInstance方法使用私有的构造方法创建对象
Object newInstance(构造方法的参数) 用该构造方法创建对象
Class类中用于获取成员变量的方法:
Field[] getFields() 返回所有公共成员变量对象的数组
Field[] getDeclaredFields() 返回所有成员变量对象的数组
Field getField(String name) 返回单个公共成员变量对象,参数里是变量名
Field getDeclaredField(String name) 返回单个成员变量对象,参数里是变量名
- 获取成员变量里的详细信息的方法(Field内的成员方法):
int getModifiers() 获取权限修饰符
String getName() 获取成员变量的名字
Class<?> getType() 获取成员变量的数据类型
void set(Object obj,Object value) 赋值,将参数二的值,赋值给对象里对应的成员变量
参数一:需要修改的对象, 参数二:值, 对饮的成员变量:调用方法的对象
setAccessible(boolean b) 临时取消权限校验,可以使get方法可以获得私有化成员变量的值
Object get(Object obj) 获取值
Class类中用于获取成员方法的方法:
Method[] getMethods() 返回所有公共成员方法对象的数组,包括继承的
Method[] getDeclaredMethods() 返回所有成员方法对象的数组,不包括继承的
Method getMethod(String name,Class<?>... parameterTypes) 返回单个公共成员方法对象(参数二是形参的Class对象)
Method getDeclaredMethod(String name,Class<?>... parameterTypes) 返回单个成员方法对象
- 获取成员方法里的详细信息的方法(Method内的成员方法):
int getModifiers() 获取权限修饰符
String getName() 获取成员变量的名字
Parameter[] getParameters() 获得方法的形参
Class[] getExceptionTypes() 获取方法抛出的异常
Object invoke(Object obj,Object...args) 运行方法
参数一: 用obj对象调用该方法
参数二: 调用方法的传递的参数(如果没有就不写)
返回值: 方法的返回值(如果没有就不写)
标签:反射,构造方法,对象,成员,获取,方法,Class
From: https://www.cnblogs.com/chj020415/p/17737124.html