gpt4 book ai didi

java - 为什么编译器不自动设置serialVersionUID?

转载 作者:行者123 更新时间:2023-11-30 03:30:54 25 4
gpt4 key购买 nike

如果Serialized类没有定义serialVersionUID,则存在这样的风险:(!对于同一个类!)执行序列化的JVM将计算出与执行序列化的JVM不同的版本反序列化。推荐的解决方案是使用 serialver 工具计算版本 ID 并手动放入源代码中。

恕我直言,这很愚蠢。如果源代码中没有定义,javac自动计算serialVersionUID并放入字节码会更好。

编译时自动计算是否存在任何可能的问题?

我知道有类似编译器插件javac -Xplugin的东西。是否可以创建实现自动化的插件?或者也许这样的插件已经创建了?

请不要向我提供 Why isn't the serialVersionUID automatically generated? 的虚假重复项讨论了不同版本的类兼容序列化的情况。我感兴趣的情况是,同一个类应该总是通过序列化,而不同版本的类应该失败。

最佳答案

因为ObjectInputStream和 friend 们这样做了。它不属于编译器的功能,即使存在也不能解决任何问题。编译器不能做任何与已经完成的事情不同的事情。

I'm interested in a case when the same class is expected to always pass serialization and different versions of class should fail.

这种情况已经有效。无需解决方案。

关于java - 为什么编译器不自动设置serialVersionUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29081134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com