2015-08-14 82 views
-1

我有一個包含另一種類型(類A)的Map屬性的類C。 我實現Serializable接口的類C和Ajava中的接口序列化

public class C { 

    Map<A, Map<Interface_I, Double>> x; 
private void writeObject(java.io.ObjectOutputStream stream) {...} 
private void readObject(java.io.ObjectInputStream stream) {...} 
} 

對於接口我我可以如何序列化?

回答

1

你是否真的需要使用writeObject和readObject自定義序列化,如the api中所述?

要序列化的接口的實現就讓它實現Serializable:

public Interface_I extends Serializable {...} 

難道你的意思?

(編輯:參照serialization descriptions,太)

+0

我想拍攝對象的快照,需要很長時間來計算某些屬性值並將其保存到文件中,以便反序列化並恢復其屬性,而無需重新計算其值。 所以,我已經爲我的類實現了可序列化的接口,這不是正確的方法嗎?有沒有另一種方法來實現我的目標? – Nasreddine

+0

當我理解你的問題時,確保應該序列化的類實現Serializable及其所有字段就足夠了。然後你只需將該對象保存到一個文件中:ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream(filename)); o.writeObject(yourFile); –

+0

並且不要忘記用transient關鍵字標記所有不可序列化的字段 –

0

如果混凝土類存儲在地圖中的對象的實現Serializable,則對象可以被序列化。

你可以通過使Interface_I擴展Serializable來強制所有這些具體類可序列化,但這通常是一個壞主意。

另外,我同意Typischserg:你可能不想用writeObject()和readObject()實現自定義序列化。