为什么我不能在没有no-arg构造函数的情况下序列化对象,即使它实现了Serializable?

时间:2014-03-11 17:22:08

标签: java serialization uuid titan kryo

我正在尝试使用Titan图数据库序列化UUID,我相信我不能,因为根据Serializable的定义,java.util.UUID无法提供无参数构造函数。

(请参阅http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html的顶部)

鉴于java.util.UUID声称实现了Serializable,这里发生了什么?这只是一个历史性的错误,不能为了向后兼容性而被删除,或者是否有一个特定的技术原因导致这种奇怪的(对我来说,烦人的)选择?

更新:根据答案,UUID实际上 Serializable,我误读了no-arg构造函数规则,这个规则很微妙,实际上并不需要在同一个类中使用no-arg构造函数。我无法序列化我的原因是 Titan (或其依赖项)添加了更严格的no-arg 声明的构造函数规则 - 而不是核心Java。我对谁强加这个规则,Java或Titan感到困惑。

1 个答案:

答案 0 :(得分:2)

Serializable类不需要no-args构造函数。它最近的非可序列化基类可以。

您误解了规范。