我有一个实现java.io.Serializable
接口的类。所以该类中的所有变量都是可串行的。但是我想让一些变量不应该是可序列化的。有可能吗?
感谢, 拉维
答案 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
并实施您自己的writeObject
和readObject
方法。
以下是一些示例:http://java.sun.com/developer/technicalArticles/Programming/serialization/
答案 2 :(得分:0)
您可以将变量设为 瞬态 ,并且可以查看以下文章以完全理解Serializable接口