在java中反序列化时,如何在不调用构造函数的情况下动态创建序列化类的对象? JVM用于创建对象实例的机制是什么?
答案 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的新实例。