【发布时间】:2011-09-19 06:42:58
【问题描述】:
我正在阅读Effective Java中的序列化章节。
谁调用了 readObject() 和 writeObject()?为什么将这些方法声明为私有?
-
以下是书中的一段代码
// StringList with a reasonable custom serialized form public final class StringList implements Serializable { private transient int size = 0; private transient Entry head = null; //Other code private void writeObject(ObjectOutputStream s) throws IOException { s.defaultWriteObject(); s.writeInt(size); // Write out all elements in the proper order. for (Entry e = head; e != null; e = e.next) s.writeObject(e.data); } } }变量
size被声明为瞬态,然后在 writeObject 方法中显式写入,是否有任何具体原因?如果它没有被声明为瞬态,它无论如何都会被写入,对吧?
【问题讨论】:
-
如果您有兴趣编写自己的序列化,请查看 Externalizable。这几乎是相同的努力,但具有更大的灵活性。 (后来添加的)
-
这只是一个示例来演示如何做到这一点。这里没有特定的理由让“大小”是暂时的。
标签: java serialization effective-java