java - java反序列化时如何动态创建序列化类的对象而不调用构造函数?

标签 java serialization deserialization

java反序列化时如何动态创建序列化类的对象而不调用构造函数? JVM 使用什么机制来创建对象实例?

最佳答案

取决于JVM,但Sun/Oracle/OpenJDK使用sun.misc.Unsafe.allocateInstance(Class)

   /** Allocate an instance but do not run any constructor.
       Initializes the class if it has not yet been. */
   public native Object allocateInstance(Class cls)
       throws InstantiationException;

http://www.docjar.com/html/api/sun/misc/Unsafe.java.html

这允许您创建几乎任何东西的新实例,例如枚举,但不是类的新实例。

关于java - java反序列化时如何动态创建序列化类的对象而不调用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9868447/

相关文章:

java - 如何解决 hibernate 双向映射导致的json序列化器中的循环引用?

java - 文本的某些部分左对齐,其他部分右对齐在 itext 的同一行中

java - Twitter4j API 中的 DirectMessage 身份验证

java - 如何正确读取http请求?

django rest JSONWebTokenAPIView 序列化器类对象没有属性 'object'

java - Map 子类的 Gson 序列化,也具有显式定义的属性

c# - 使用内存流序列化/反序列化

python - Django REST 框架 - 序列化和反序列化原始类型列表

java - 可序列化的类无法反序列化

java - 无法摆脱循环