0%

反射

含义

反射之所以被称为框架的灵魂,主要是因为它赋予了我们在运行时分析类以及执行类中方法的能力
通过反射你可以获取任意一个类的所有属性和方法,你还可以调用这些方法和属性。

场景

动态代理 注解 + 反射

1
2
@Component
@Value

优缺点

优点:
可以让咱们的代码更加灵活、为各种框架提供开箱即用的功能提供了便利。
缺点:
让我们在运行时有了分析操作类的能力,这同样也增加了安全问题。比如可以无视泛型参数的安全检查(泛型参数的安全检查发生在编译时)。另外,反射的性能也要稍差点,不过,对于框架来说实际是影响不大的。

实战

获取 Class 对象的四种方式

1
2
3
4
5
6
7
8
9
10
11
12
// 1.知道具体类的情况下可以使用
Class alunbarClass = TargetObject.class;

// 2.通过 Class.forName()传入类的全路径获取
Class alunbarClass1 = Class.forName("cn.javaguide.TargetObject");

// 3.通过对象实例instance.getClass()获取
TargetObject o = new TargetObject();
Class alunbarClass2 = o.getClass();

// 4.通过类加载器xxxClassLoader.loadClass()传入类路径获取
ClassLoader.getSystemClassLoader().loadClass("cn.javaguide.TargetObject");