Java实例化对象的几种方式
Contents
💠
💠 2024-06-02 17:50:57
Java 实例化对象的方式
new
TODO
反射
- 获取Class对象
- 反射获取构造器方法或者调用 newInstance 方法(实际上是调用空构造器方法) 进行实例化
clone
需要规避深拷贝问题,默认只复制第一层的成员属性
反序列化
TODO
Unsafe
sun.misc.Unsafe 中提供 allocateInstance
方法,仅通过Class对象就可以创建此类的实例对象,而且不需要调用其构造函数、初始化代码、JVM安全检查等。
它抑制修饰符检测,也就是即使构造器是private修饰的也能通过此方法实例化,只需提类对象即可创建相应的对象。
由于这种特性,allocateInstance在 java.lang.invoke、Objenesis(提供绕过类构造器的对象生成方式)、Gson(反序列化时用到)中都有相应的应用。
Author Kuangcp
LastMod 2020-02-02