我讀過一般抽象類不應該在Java中進行Serializable。子類應該是可序列化的(如果需要,可以使用自定義讀取,寫入方法,例如抽象類具有字段時)。爲什麼不在Java中序列化抽象類?
這是什麼原因?爲什麼它被認爲是不好的設計?
Update1:我有一個抽象類,有一些字段和三個子類。截至目前,我正在使用以下方法。
我已經使所有的子類與自定義讀取,寫入方法序列化。在抽象類中,我有以下方法。
void writeFields(ObjectOutputStream out)throws IOException { .... }
void readFields(ObjectInputStream in) throws IOException, ClassNotFoundException{ ... }
在自定義讀取中,在子類中寫入方法我調用這些方法來(抽象)序列化抽象類中的字段。這種方法是否正確?或者有更好的方法嗎?
更新2:我採取了湯姆的建議,並使我的抽象類Serializable。 (我希望所有的子類都是可序列化的,並且我有抽象類中的數據)這是一個旁白,但僅僅是爲了完成我正在使用的故事reflection to change final fields as advised by Jeremy Manson.
這個問題適用於任何面向對象的語言。 – 2010-12-15 17:34:10