1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-01 16:28:03 +08:00

Merge 2e9e3fe193730c404d7b464579ce078d0473ee36 into d0e70fcbbbbf39d8805609f5bdffe722745e83e8

This commit is contained in:
Qin 2024-06-06 17:53:07 +08:00 committed by GitHub
commit 9af407bc4d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -421,7 +421,7 @@ public void objTest() throws Exception{
#### 典型应用 #### 典型应用
- **常规对象实例化方式**:我们通常所用到的创建对象的方式,从本质上来讲,都是通过 new 机制来实现对象的创建。但是new 机制有个特点就是当类只提供有参的构造函数且无显声明无参构造函数时,则必须使用有参构造函数进行对象构造,而使用有参构造函数时,必须传递相应个数的参数才能完成对象实例化。 - **常规对象实例化方式**:我们通常所用到的创建对象的方式,从本质上来讲,都是通过 new 机制来实现对象的创建。但是new 机制有个特点就是当类只提供有参的构造函数且无显声明无参构造函数时,则必须使用有参构造函数进行对象构造,而使用有参构造函数时,必须传递相应个数的参数才能完成对象实例化。
- **非常规的实例化方式**:而 Unsafe 中提供 allocateInstance 方法,仅通过 Class 对象就可以创建此类的实例对象而且不需要调用其构造函数、初始化代码、JVM 安全检查等。它抑制修饰符检测,也就是即使构造器是 private 修饰的也能通过此方法实例化只需提类对象即可创建相应的对象。由于这种特性allocateInstance 在 java.lang.invoke、Objenesis提供绕过类构造器的对象生成方式、Gson反序列化时用到中都有相应的应用。 - **非常规的实例化方式**:而 Unsafe 中提供 allocateInstance 方法,仅通过 Class 对象就可以创建此类的实例对象而且不需要调用其构造函数、初始化代码、JVM 安全检查等。它抑制修饰符检测,也就是即使构造器是 private 修饰的也能通过此方法实例化只需提类对象即可创建相应的对象。由于这种特性allocateInstance 在 java.lang.invoke、Objenesis提供绕过类构造器的对象生成方式、Gson反序列化时用到中都有相应的应用。
### 数组操作 ### 数组操作