一、什么是反射?
反射就是将一个类中的成员属性,构造方案,成员方法制成Class类对象,在程序运行时动态操纵类对象的过程。
二、作用:注解的实现原理,框架设计的灵魂
1 使用类对象实现扩展功能,
2 可以枚举出属性构造器方法,帮助开发人员更好的工作写代码
3测试的时候翻译访问私有变量,保证测试覆盖率
三、如何获取Class类对象
Class 变量名 = 以上三种方式;
四、利用Class类对象获取类中的内容
1、成员属性Field
Field[] fields = Class变量名.getFields() 获取public修饰的属性
Field[] fields = Class变量名.getDeclaredFields() 获取所有类型的属性,private的也可以
Field[] fields = Class变量名.getDeclaredFields( 类型) 当其中有参数时,使用返回的若是private的属性会报错,必须在此之后添加 fields.setAccessable(true); 表示忽略访问修饰符
2 构造器 (创建对象)
Constructor constructor = 类名.getConstructor(); 获取构造器
Object 对象 = constructor. newInstance(); 创建对象有参无参都可以
Object 对象 = 类名.newInstance(); 无参使用
3、成员方法
成员方法获取与上述相同
主要是由一个执行成员方法的方法 :method.invoke()方法