定义
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
用途
在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。当然,也不是所有的都适合反射,之前就遇到一个案例,通过反射得到的结果与预期不符。阅读源码发现,经过层层调用后在最终返回结果的地方对应用的权限进行了校验,对于没有权限的应用返回值是没有意义的缺省值,否则返回实际值起到保护用户的隐私目的。
反射机制的相关类
与Java反射相关的类如下:
反射Class类
lass Class 类的实例表示正在运行的 Java 应用程序中的类和接口。
Class是反射的源头,一旦加载类,就会存在一个当前类的Class对象,Class只有一个,存着这个类的所有内容,如果一旦获取到一个类的Class对象,就能够对这个进行任何操作。
如何获取反射的源头,一个类的Class对象:
- 类名.class
- 对象.getClass()
- Class.forName(“报名+类名”)
- 获得类相关的方法
示例
public class ReflectDemo01 {
public static void main(String[] args) throws ClassNotFoundException{
//1.类名.class
Class<String> cls1=String.class;
//2.对象.getClass()
Class cls2="博主最帅".getClass();
//3.Class.forName("报名+类名") ---推荐
Class cls3=Class.forName("java.lang.String");
System.out.println(cls1);
System.out.println(cls1==cls2);
System.out.println(cls1==cls3);
//获取父类的Class对象
Class cls4=cls1.getSuperclass();
System.out