正如我們所知,我們可以通過使用類加載器/對象克隆/對象序列化來實例化沒有關鍵字new
的對象。當我使用這些技術創建對象時,構造函數是否被調用?對象實例沒有新建?
回答
對於Object.clone
不調用構造函數。
對於序列化,調用了大多數派生的不可序列化的基類無參數構造函數。通常通過加載不驗證的字節碼來實現。構造函數必須可以訪問最基本的serialisable類。
據我所知,所有三個使用構造函數甚至序列化。
http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html
亞型可以假設,只有當它擴展的類有一個可訪問的無參數的構造函數初始化類的狀態,這個責任。如果不是這種情況,則聲明類Serializable是錯誤的
該報價從哪裏來?您應該(理想情況下)提供鏈接或提供引文。 – APC 2010-07-02 08:52:18
編輯添加鏈接 – 2010-07-02 09:26:02
我認爲這種引用只適用於不可序列化的類的子類。在這種情況下,超類必須聲明一個無參數的構造函數。可序列化類本身的字段在不調用構造函數的情況下被初始化。 – 2010-07-02 09:43:47
- 1. Java - 沒有新實例的對象
- 2. mysqli_fetch_object時創建新的對象實例
- 3. 使用新詞創建對象實例
- 4. 創建新的實例對象
- 5. 新陣列(_)填充(對象)不創建對象的新實例
- 6. 在java中沒有新對象實例的新文件路徑
- 7. ActionScript - 從實例實例化新對象?
- 8. XMLHttpRequest對象沒有被實例化?
- 9. 對象沒有正確實例化
- 10. 對象沒有屬性'__getitem__'(類實例?)
- 11. Django:`create()`沒有返回對象實例
- 12. JavaScript,沒有參考的對象實例
- 13. Google Reflections對象沒有實例
- 14. 對象的新實例實際上是重用現有對象
- 15. 有沒有辦法獲得創建另一個對象的對象的實例?
- 16. 新對象不實例SMO
- 17. jQuery對象的新實例
- 18. 創建對象實例
- 19. 創建一個對象的新實例,或修改現有的實例?
- 20. 在注入對象時強制創建對象的新實例
- 21. 如何添加新的對象實例到std :: list沒有'new'
- 22. php新類對象沒有被實例化
- 23. 對象沒有設置爲對象的實例
- 24. PdfContentByte.SetFontAndSize()拋出「沒有設置對象實例的對象引用」
- 25. 對象數組:參照現有對象或新實例
- 26. Django 1.9更新模型對象創建一個新對象實例
- 27. 如何在沒有在C#JSON中創建對象的新實例的情況下反序列化對象?
- 28. 我的工廠應該創建所有對象實例嗎?包括新實體?
- 29. 對象引用在新對象實例化後不會更新
- 30. 強制原型在對象的新實例中擁有新的父對象
你總是可以編寫一個類,在構造函數中寫入控制檯的東西並嘗試所有的技巧。是實驗者! – Andrey 2010-07-02 08:50:26