2.反射

反射

概述:

反射允许对成员变量,成员方法和构造方法的信息进行编程访问;
是从class字节码文件中获取的;

获取Class对象

  1. Class.forName("全类名");
  2. 类名.class;
  3. 对象.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对象调用该方法
	参数二:	调用方法的传递的参数(如果没有就不写)
	返回值:	方法的返回值(如果没有就不写)
posted @ 2023-09-29 17:22  回家太晚太悲催  阅读(11)  评论(0)    收藏  举报