mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-16 18:10:13 +08:00
Update unsafe.md
private修饰的构造函数也可以通过反射创建对象,避免歧义
This commit is contained in:
parent
b4a1c6d554
commit
6461c75c19
@ -417,7 +417,7 @@ public void objTest() throws Exception{
|
||||
}
|
||||
```
|
||||
|
||||
打印结果分别为 1、1、0,说明通过`allocateInstance`方法创建对象过程中,不会调用类的构造方法。使用这种方式创建对象时,只用到了`Class`对象,所以说如果想要跳过对象的初始化阶段或者跳过构造器的安全检查,就可以使用这种方法。在上面的例子中,如果将 A 类的构造函数改为`private`类型,将无法通过构造函数和反射创建对象,但`allocateInstance`方法仍然有效。
|
||||
打印结果分别为 1、1、0,说明通过`allocateInstance`方法创建对象过程中,不会调用类的构造方法。使用这种方式创建对象时,只用到了`Class`对象,所以说如果想要跳过对象的初始化阶段或者跳过构造器的安全检查,就可以使用这种方法。在上面的例子中,如果将 A 类的构造函数改为`private`类型,将无法通过构造函数和反射创建对象(可以通过构造函数对象setAccessible后创建对象),但`allocateInstance`方法仍然有效。
|
||||
|
||||
#### 典型应用
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user