当前位置:  开发笔记 > 编程语言 > 正文

显式serialVersionUID被认为有害吗?

如何解决《显式serialVersionUID被认为有害吗?》经验,为你挑选了2个好方法。

我可能会冒这个问题冒险.

在我看来,为新类显式指定serialVersionUID是不好的.考虑两种情况,即在布局应该更改时不更改它,并在不应该更改时更改它.

不应该改变它何时应该被改变发生几乎只有在它是明确的时候.在这种情况下,它会导致一些非常微妙,难以发现的错误.特别是在开发过程中,当类布局经常变化时.但是如果它没有明确指定,它将会改变并且反序列化将大声破坏,最有可能通过清除存储库来解决.

不应该发生的情况几乎只有在隐含时才会发生.这是一种罕见的情况,其中类布局已更改但我们仍希望从旧的序列化blob反序列化.这可能会在QA期间被捕获(从5.2升级到5.2.1之后的奇怪错误,请参阅附加的堆栈跟踪),并且可以通过设置显式值来轻松修复.

评论?



1> Jon Skeet..:

由于类布局更改以外的原因,更改何时不应该发生 - 问题在于它依赖于编译器实现.如果您使用Eclipse进行调试但使用javac进行生产构建,最终可能会出现两个不兼容的数据集.



2> Yoni Roit..:

在我的工作中,我们明确禁止指定serialVersionUID,正是因为你提出的问题.

另外,我们持久化的类仅用于存储内部没有逻辑的数据,因此它们改变的唯一方法是更改​​数据成员.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有