可序列化的界面

时间:2010-01-09 20:18:43

标签: java

我有一个实现java.io.Serializable接口的类。所以该类中的所有变量都是可串行的。但是我想让一些变量不应该是可序列化的。有可能吗?

感谢, 拉维

3 个答案:

答案 0 :(得分:4)

将这些变量标记为transient

e.g。

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

A的对象被序列化时,瞬态字段b将不会被序列化。

答案 1 :(得分: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/

答案 2 :(得分:0)

您可以将变量设为 瞬态 ,并且可以查看以下文章以完全理解Serializable接口

http://www.codingeek.com/java/io/object-streams-serialization-deserialization-java-example-serializable-interface/