serialization - 如果应用程序从不依赖其对象标识,是否可以序列化基于值的对象?

标签 serialization java-8 java-9 project-valhalla

声纳显示

Make this value-based field transient so it is not included in the serialization of this class.



当基于值的类将被发布时,这是一个面向 future 的错误。

那么,如果应用程序从不依赖其对象标识,我是否可以使基于值的对象成为非 transient 对象?

最佳答案

为了使基于值的类的字段是非 transient 的,基于值的类必须是可序列化的。所以这实际上是一个不是由你做出的设计决定。

如果设计者将一个类声明为基于值并实现 Serializable ,他们假设基于值的类和序列化是兼容的,并将保持如此。

我们不知道最终的值类型实现会是什么样子,但是 JRE 开发人员提供的迁移路径,例如介绍时the immutable lists, being value based and serializable , 应该被采纳,而不是假设有超出规范的额外规则和约束。

毕竟,没有理由假设序列化不适用于值类型。它也支持原始值,并且在过去也进行了调整,例如当enum添加了支持。目前尚不清楚它是否会始终存储值,或者仍然像普通对象一样支持反向引用或执行完全不同的规范化,但只要您不依赖对象标识,就像您的前提一样,您就在安全的一面,因为任何一种策略都适用于您的代码。

关于serialization - 如果应用程序从不依赖其对象标识,是否可以序列化基于值的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47922917/

相关文章:

java - Tinkerpop 注册自定义类 kryo

java - 将字符串转换为日期 - 罗马月

Java 8 访问嵌套列表中的先前值

java - Javadoc 如何处理 Java 9 中模块的可见性?

C# 在通过 TCP 接收结构后反序列化结构

java - 序列化与字节码翻译

serialization - 如何快速将 Clojure 数据结构序列化为带有缩进的字符串?

java - Collectors.toMap() 中映射的默认值

java - 如何使 Java 9 在 HiDPI 显示器上使用更高分辨率的图像?

java - 在 Java 9 中以编程方式连接到 JMX 代理