JAVA系列:Java反射机制
目录
什么是反射机制?
在通常情况下,如果有一个类,可以通过类创建对象;但是反射就是要求通过一个对象找到一个类的名称;
假设对于类ReflectionTest.java,我们知道的唯一信息是它的类名是 com.skywang.Reflection。 这时,我们想要知道ReflectionTest.java的其它信息(比如它的构造函数,它的成员变量等等),要怎么办呢?
这就需要用到“反射”。通过反射,我们可以解析出ReflectionTest.java的完整信息,包括它的构造函数,成员变量,继承关系等等。
反射主要提供以下功能
- 在运行时判断任意一个类所具有的成员变量和方法);
在运行时判断任意一个对象所属的类
这种动态获取的信息及动态调用对象的方法的功能称为:反射机制
如何使用反射
这个过程主要分为两步:
第1步:根据“类名”来获取对应类的Class对象。
第2步:通过Class对象的函数接口,来读取“类的构造函数,成员变量”等信息。
demo
反射API
Constructor:用来描述一个类的构造方法
Field:用来描述一个类的成员变量
Method:用来描述一个类的方法
Modifer:用来描述类内部各元素的修饰符
Array:用来对数组进行操作
暴力反射
暴力反射就是将类的一些私有的成员,通过getDeclaredMethod,getDeclaredField, getDeclaredConstructor
强制取出。通过setAccessible(true)方法。