声纳显示
使此基于价值的字段瞬态,因此不包括在 序列化此类。
将发布基于价值的类时,这是一个防止未来的错误。
因此,如果应用程序永远不依赖其对象身份,我可以将基于价值的对象非传输吗?
要使基于价值的类非传输的字段,基于值的类必须是可序列化的。因此,这实际上是您不是您做出的设计决定。
如果设计师将类声明为基于价值并实现Serializable
,则他们认为基于价值的类和序列化是兼容的,并且会保持如此。
我们不知道,最终值类型实现的样子,但是JRE开发人员提供的迁移路径,例如当介绍不变的列表时,应采用基于价值的和可序列化的列表,而不是假设规范以外还有其他规则和约束。
毕竟,没有理由假设序列化无法与价值类型一起使用。它也支持原始价值,并且过去也已经改编了,例如当添加enum
支持时。目前尚不清楚它是始终存储当时的值还是仍然支持像普通对象(如普通对象)或执行完全不同的规范化的引用,但是只要您不依赖对象身份,您的前提也是如此,您就在安全的一面,因为任何一种策略都可以使用您的代码。