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

问题描述 投票:5回答:1

声纳显示

使这个基于值的字段瞬态,因此它不包含在此类的序列化中。

这是一个面向未来的错误,当基于价值的类将被释放时。

那么,如果应用程序永远不依赖于它的对象标识,那么我可以使基于值的对象非瞬态吗?

serialization java-8 java-9 project-valhalla
1个回答
6
投票

要使基于值的类的字段非瞬态,基于值的类必须是可序列化的。所以它实际上是一个没有你做出的设计决定。

如果设计者声明一个类是基于值的并且实现了Serializable,那么他们认为基于值的类和序列化是兼容的并且将保持不变。

我们不知道最终值类型实现将如何,但JRE开发人员提供的迁移路径,例如在引入the immutable lists, being value based and serializable时,应该采取,而不是假设有超出规范的额外规则和约束。

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

© www.soinside.com 2019 - 2024. All rights reserved.