在java中反序列化时,如何在不调用构造函数的情况下动态创建序列化类的对象?

时间:2012-03-26 07:53:45

标签: java serialization deserialization

在java中反序列化时,如何在不调用构造函数的情况下动态创建序列化类的对象? JVM用于创建对象实例的机制是什么?

1 个答案:

答案 0 :(得分:2)

它取决于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

这允许您创建几乎任何内容的新实例,例如枚举,但不是Class的新实例。