【发布时间】:2014-03-12 03:19:53
【问题描述】:
我正在尝试使用 Titan 图形数据库序列化 UUID,但我相信我不能,因为根据 Serializable 的定义,java.util.UUID 无法提供无参数构造函数。
(请参阅http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html 的顶部)
鉴于 java.util.UUID 声称要实现 Serializable,这是怎么回事?这仅仅是为了向后兼容而无法消除的历史错误,还是这种奇怪(对我来说,很烦人)的选择有特定的技术原因?
更新:根据答案,UUID 实际上是 可序列化的,我误读了无参数构造函数规则,该规则很微妙,实际上并不需要同一类中的无参数构造函数。我无法序列化我的原因是 Titan(或其依赖项)添加了更严格的无参数 declared 构造函数规则——而不是核心 Java。我不知道是谁在强加这条规则,Java 还是 Titan。
【问题讨论】:
-
你有堆栈跟踪吗?可以加吗?
-
看看这里,这可能会有所帮助:stackoverflow.com/questions/4124907/…
-
UUID是可序列化的,并且您误读了文档:无参数构造函数规则仅适用于可序列化类扩展不可序列化类并管理该类字段的序列化时。与其做出假设,不如展示您的代码和堆栈跟踪。 -1,直到你这样做。 -
为我工作:ideone.com/oVWNFI
-
@kdgregory 这也不正确。最近的不可序列化基类必须提供无参数构造函数;它与“并管理该类的序列化”无关;并且所有可序列化的类最终都扩展了一个不可序列化的类,因为 java.lang.Object。
标签: java serialization uuid titan kryo