2010-08-15 37 views
17

我试图修复一个程序错误,我认为这可能是由于Hibernate搞清楚如何实例化一个对象的实例而不调用它的默认构造函数(或任何其他构造函数)。是否有可能在不调用构造函数的情况下在Java中创建对象的实例?

+3

您应该发布原始问题而不是假设的解决方案。 – 2010-08-15 15:57:55

+2

Hibernate使用实体的默认空构造函数。你走错了路。改为发布你的问题。 – 2010-08-15 16:09:25

回答

23

实际上,是的,如果您使用objenesis为您实例化对象,则可以在实例化对象时绕过构造函数。它通过字节码操作来实现这一点。

反序列化对象也会绕过构造函数。

这是不可能的使用反射。

7

是的,反序列化对象不会调用其构造函数。这就是说,我不明白为什么hibernate会序列化一个对象,除非可能在二级缓存中。

8

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

+0

只要克隆()正确实施,当然。可以重写克隆以充当不使用super.clone()的工厂方法。 (虽然应该使用super.clone(),而不是构造函数) – DerMike 2010-08-15 16:39:54

相关问题