一、获取 目标类型的Class对象
1 | Class<?> classType = carson.getClass(); |
输出
1 | class java.lang.Boolean |
二、通过 Class 对象分别获取Constructor类对象、Method类对象 & Field 类对象
1 | <-- 1. 获取类的构造函数(传入构造函数的参数类型)->> |
三、 通过 Constructor类对象、Method类对象 & Field类对象分别获取类的构造函数、方法 & 属性的具体信息 & 进行操作
1 | // 即以下方法都分别属于`Constructor`类、`Method`类 & `Field`类的方法。 |
四、利用反射调用类的构造函数
1 | public class Student { |
五、 利用反射调用类对象的方法
1 | public class Student { |
六、优点与缺点
优点: 灵活性高。因为反射属于动态编译,即只有到运行时才动态创建 &获取对象实例。
缺点: 执行效率低
因为反射的操作 主要通过JVM执行,所以时间成本会 高于 直接执行相同操作。