是否可以在不调用构造函数的情况下在Java中创建对象的实例?

Jac*_*nds 19 java

我正在尝试修复我的一个程序中的错误,我认为这可能是由于Hibernate确定了如何在不调用其默认(或任何其他)构造函数的情况下实例化对象的实例.

jqn*_*qno 28

实际上,是的,如果您使用objenesis为您实例化对象,则可以在实例化对象时绕过构造函数.它执行字节码操作来实现此目的.

反序列化对象也将绕过构造函数.

使用反射无法做到这一点.


Rom*_*man 9

只是为了完成图片:使用方法clone创建一个新对象也绕过构造函数.


mer*_*ike 7

是的,反序列化对象不会调用其构造函数.

也就是说,我不明白为什么hibernate会序列化一个对象,除非在二级缓存中.


Ric*_*arn 7

反序列化涉及在不调用构造函数的情况下创建对象.

可以(至少使用Sun/Oracle JDK)以编程方式执行此操作.这浑身上下"创建对象,而不调用构造函数",一个版本的Java的专家通讯.它涉及使用sun.*包中的类,因此不可移植.