2013-05-29 71 views
-3

如果擴展一個不可序列化的庫函數以在java中實現可序列化,會發生什麼情況?例如:如果你在java中創建一個不可序列化的類可序列化,會發生什麼?

public class SerializableMethod extends Method implements Serializable {} 
+3

這是一個類,而不是一個方法。 – thatidiotguy

+4

'方法'類是'final';它不能被擴展。 – rgettman

+1

然後你實現序列化方法,並告訴他們如何序列化它... – crush

回答

0

您可以擴展不是可序列化的線程,而當您嘗試序列化時,它將失敗,因爲它包含不是可序列化的字段。

我建議你嘗試一下,因爲確切的行爲將取決於你試圖擴展的類。

+1

如果你寫下這裏提到的方法,任何東西都可以是'Serializable':http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html。 'writeObject()'和'readObject'是兩個,如果簽名完全匹配,它們將用於將重要對象狀態轉換爲字節流(或類型)。我不知道你將如何存儲和檢索「線程」,但它不會失敗。 –

+1

@LeeMeador它不一定失敗,但序列化一個線程不太可能做你認爲它將要做的事情。您可以防止拋出異常,但這可能不夠。 –

+0

這不是一個好主意,因爲最終你不能序列化一個線程,但是你可以寫很多空的'writeObject()'方法,這是我們大多數人都同意的。 (顯然首先破壞了實現接口的目的) – crush

1

一般來說,這個問題沒有一個確定的答案。有時候,新班級有能力進行序列化。有時候不是。它取決於該類及其所有超類的非暫時性實例變量是否可自行序列化。如果他們是,我們很好,子類現在可序列化(受制於構造函數的一些技巧)。

在上面的具體情況中,如果這是您嘗試擴展的java.lang.reflect.Method,則會出現其他問題;該班級標記爲final

相關問題