了解Java反射,什么是反射,学习反射原理

了解反射,什么是反射,学习反射

反射【重点】

反射原理

在这里插入图片描述

1. 获取Class类对象
static Class forName(String className);
	通过Class类名调用,是一个static修饰的静态方法,传入的参数是一个完整的包名.类名
	例如:
		Demo1 ==》 com.qfedu.a.Demo1
	该方法有异常抛出 ClassNotFoundException

Class 类名.class 
    通过指定的类名调用,获取类对应的属性
   
Class 类对象.getClass();
	通过类对象,获取对应当前类对象的class, Class类对象
2. 获取Constructor类对象
Constructor[] getConstructors();
	获取当前类内所有非私有化构造方法Constructor数组
	
Constructor[] getDeclaredConstructors();
	获取当前类内的所有构造方法Constructor数组,包括私有化构造方法
	
Constructor getConstructor(Class... initParameterType);
	根据指定的参数类型,获取指定的非私有化构造方法类对象, Constructor
	Class... 首先这里要求的数据类型是Class类对象,而且当前参数的个数不确定
	可以不传入参数,也可以传入多个Class类型的参数。
	
Constructor getDeclaredConstructor(Class... initParameterType);
	根据指定的参数类型,获取指定的构造方法类对象,包括私有化构造方法。
	Class... 这里是一个不定长参数,需要的参数类型是Class类对象,个数不限!!!

Object newInstance(Object... initParameter);
	通过Constructor类对象调用,传入参数是当前构造方法,创建对象所需的实际参数。

3. 获取Method类对象
Method[] getMethods();
	获取当前类内所有的非私有化成员方法,包括从父类继承而来的可以在子类使用的成员方法
	
Method[] getDeclaredMethods();
	获取当前类内的所有方法,但是不包括从父类继承而来方法

Method getMethod(String methodName, Class... parameterTypes);
	获取类内指定方法名和参数类型的非私有化成员方法
	String methodName: 指定的方法名字
	Class... parameterTypes 当前方法参数类型的Clas类对象,不定长参数
	
Method getDeclaredMethod(String methodName, Class... parameterTypes);
	获取类内指定方法名和参数类型的成员方法,包括私有化方法
	String methodName: 指定的方法名字
	Class... parameterTypes 当前方法参数类型的Clas类对象,不定长参数

Object invoke(Object obj, Object... args);
	Object obj 调用当前方法的类对象
	Object... args 执行当前方法需要的实际参数列表
4. 获取Field类对象
Field[] getFields();
	获取当前类内的所有非私有化成员变量类对象,返回的是一个Field类型数组
	
Field[] getDeclareFields();
	获取当前类内的所有成员变量,包括私有化成员变量,返回的是一个Field类对象数组

Field getField(String fieldName);
	通过指定成员变量的名字。获取指定的成员变量类对象,但是不能获取私有化成员变量
	
Field getDeclaredField(String fieldName);
	通过指定的成员变量名字。获取指定的成员变量类对象,而且可以获取私有化成员变量

void set(Object obj, Object value);
	Object obj 是操作当前成员变量的类对象
	value 是给予当前成员变量的值

Object get(Object obj);
 	Object obj 指定获取哪一个类对象中成员变量数据
给予暴力反射操作权限
void setAccessible(boolean)
	暴力反射获取的内容,默认情况下类外没有操作权限,如果调用当前方法,传入参数为true,
	就可以使用暴力反射内容
发布了20 篇原创文章 · 获赞 36 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41426763/article/details/101307986
今日推荐