【发布时间】:2011-08-19 11:25:48
【问题描述】:
来自SE_BAD_FIELD的描述:
可序列化类中的非瞬态不可序列化实例字段
这个 Serializable 类定义了一个非原始实例字段,它既不是瞬态的、Serializable 也不是 java.lang.Object,并且似乎没有实现 Externalizable 接口或 readObject() 和 writeObject() 方法。如果此字段中存储了不可序列化的对象,则此类的对象将无法正确反序列化。
为什么java.lang.Object 是规则的例外?
【问题讨论】:
-
也许作者期望如果你故意选择 java.lang.Object 作为属性的类型(最通用的类型,你不能假设任何东西)而不是某些特定类型,你已经很清楚,序列化不能在该领域合理地工作。但我同意这个例外很奇怪:毕竟,错误很可能是你忘记了瞬态修饰符!
-
可能与锁对象有关。
标签: java serialization findbugs