我試圖修復一個程序錯誤,我認爲這可能是由於Hibernate搞清楚如何實例化一個對象的實例而不調用它的默認構造函數(或任何其他構造函數)。是否有可能在不調用構造函數的情況下在Java中創建對象的實例?
17
A
回答
23
7
是的,反序列化對象不會調用其構造函數。這就是說,我不明白爲什麼hibernate會序列化一個對象,除非可能在二級緩存中。
6
反序列化涉及在不調用構造函數的情況下創建對象。
這可能(至少在Sun/Oracle JDK中)以編程方式執行此操作。這包括在"Creating Objects Without Calling Constructors"中,版本爲The Java Specialists' Newsletter.它涉及使用sun.*
軟件包中的類,因此不便攜。
8
只是爲了完成圖片:使用方法clone
來創建一個新的對象繞過構造函數。
+0
只要克隆()正確實施,當然。可以重寫克隆以充當不使用super.clone()的工廠方法。 (雖然應該使用super.clone(),而不是構造函數) – DerMike 2010-08-15 16:39:54
相關問題
- 1. 如何在不調用構造函數的情況下創建對象?
- 2. 如何在不調用構造函數的情況下創建對象?
- 3. 是否有可能在不調用任何構造函數的情況下實例化一個類?
- 4. 我們是否可以在不使用構造函數的情況下創建perl對象
- 5. 是否有可能在不調用析構函數的情況下刪除C++中的對象?
- 6. 在不調用構造函數的情況下遞歸地實例化子類?
- 7. 是否有可能在構造函數中調用函數? PHP
- 8. 每次在java中調用構造函數時是否創建對象?
- 9. Java - 在不知道構造函數參數的情況下使用反射創建新實例
- 10. 類構造函數PolymerElement不能在沒有'new'的情況下調用
- 11. 從它的構造函數中創建新的對象實例
- 12. 默認情況下,Java構造函數是不是公共的?
- 13. 構造函數如何在沒有創建對象的情況下調用?爲什麼構造函數沒有以相同的方式再次調用?
- 14. 在不創建實例的情況下調用類屬性
- 15. 在不調用構造函數的情況下在類中調用方法
- 16. 構造函數在不復制對象的情況下獲取對象
- 17. 是否有可能在不使用默認構造函數的情況下在類定義內創建類的對象
- 18. 從子類構造函數調用超級構造函數是否在內存中創建超類的對象?
- 19. 是否有可能在沒有括號的情況下調用VB函數?
- 20. 帶有創建該對象實例的方法的Java構造函數
- 21. 在不知道構造函數參數的情況下從java反射創建對象
- 22. 在構造函數中創建對象
- 23. 是否可以在構造函數中繼承Java對象?
- 24. 無構造函數的類可以在沒有實例化的情況下調用它們的方法嗎?
- 25. 在不創建對象的情況下調用類的方法
- 26. 不能實例中的對象構造
- 27. 是否有可能在c#中創建一個將創建隨機對象的構造函數列表?
- 28. 在堆(Java)上創建對象之後調用對象的構造函數嗎?
- 29. 不能創建在類的構造函數的對象
- 30. 在不創建新對象的情況下調用公共函數JS
您應該發佈原始問題而不是假設的解決方案。 – 2010-08-15 15:57:55
Hibernate使用實體的默認空構造函數。你走錯了路。改爲發佈你的問題。 – 2010-08-15 16:09:25