Skip to content

instantiation object

kcp edited this page Jul 13, 2020 · 1 revision

title: Java实例化对象的几种方式 date: 2020-02-02 18:45:47 tags: categories:

目录 start

  1. Java 实例化对象的方式
    1. new
    2. 反射
    3. clone
    4. 反序列化
    5. Unsafe

目录 end|2020-04-27 23:42|


Java 实例化对象的方式

Github: 实例代码

Java创建对象的五种方式

new

TODO

反射

  1. 获取Class对象
  2. 反射获取构造器方法或者调用 newInstance 方法(实际上是调用空构造器方法) 进行实例化

clone

TODO

反序列化

TODO

Unsafe

sun.misc.Unsafe 中提供 allocateInstance 方法,仅通过Class对象就可以创建此类的实例对象,而且不需要调用其构造函数、初始化代码、JVM安全检查等。
它抑制修饰符检测,也就是即使构造器是private修饰的也能通过此方法实例化,只需提类对象即可创建相应的对象。
由于这种特性,allocateInstance在 java.lang.invoke、Objenesis(提供绕过类构造器的对象生成方式)、Gson(反序列化时用到)中都有相应的应用。

Summary

Clone this wiki locally