2010-07-02 93 views
3

正如我們所知,我們可以通過使用類加載器/對象克隆/對象序列化來實例化沒有關鍵字new的對象。當我使用這些技術創建對象時,構造函數是否被調用?對象實例沒有新建?

+2

你總是可以編寫一個類,在構造函數中寫入控制檯的東西並嘗試所有的技巧。是實驗者! – Andrey 2010-07-02 08:50:26

回答

4

對於Object.clone不調用構造函數。

對於序列化,調用了大多數派生的不可序列化的基類無參數構造函數。通常通過加載不驗證的字節碼來實現。構造函數必須可以訪問最基本的serialisable類。

1

據我所知,所有三個使用構造函數甚至序列化。

http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html

亞型可以假設,只有當它擴展的類有一個可訪問的無參數的構造函數初始化類的狀態,這個責任。如果不是這種情況,則聲明類Serializable是錯誤的

+0

該報價從哪裏來?您應該(理想情況下)提供鏈接或提供引文。 – APC 2010-07-02 08:52:18

+0

編輯添加鏈接 – 2010-07-02 09:26:02

+0

我認爲這種引用只適用於不可序列化的類的子類。在這種情況下,超類必須聲明一個無參數的構造函數。可序列化類本身的字段在不調用構造函數的情況下被初始化。 – 2010-07-02 09:43:47

相關問題