2010-01-09 18 views
4

我有一個類實現java.io.Serializable接口。因此該類中的所有變量都是可串行化的。但是我想讓一些變量不應該可序列化。可能嗎?可串行化接口

感謝, 拉維

+0

我的文章接受一些22個問題的答案。 – Ravikanth 2010-01-09 20:28:00

回答

4

馬克那些變量transient

例如

class A implements Serializable{ 
    int a; 
    transient int b; 
} 

當一個A的對象被序列化時,暫態字段b將不被序列化。

+0

非常感謝Grey..But其他方式? – Ravikanth 2010-01-09 20:21:36

+1

'transient'有什麼問題?你還想怎麼做? – skaffman 2010-01-09 20:22:54

+0

您可以編寫自己的自定義readObject和writeObject,並序列化您喜歡的方式。但是一個關鍵字更簡單。 – 2010-01-09 20:25:36

1

如果你不想使用transient(爲什麼不呢?),你可以實現Externalizable和實施自己的協議:

public class Spaceship implements Externalizable { 

    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { 
     // ... 
    } 

    public void writeExternal(ObjectOutput out) throws IOException { 
     // ... 
    } 

} 

如果這是過於極端,也許你只是想自定義序列化位?繼續執行Serializable並實施您自己的writeObjectreadObject方法。

這裏有一堆例子:http://java.sun.com/developer/technicalArticles/Programming/serialization/