为了账号安全,请及时绑定邮箱和手机立即绑定

使用类的哈希码作为serialVersionUID是否明智?

使用类的哈希码作为serialVersionUID是否明智?

呼啦一阵风 2019-04-10 14:15:42
我注意到在我公司的代码库中,一个常见的模式是将serialVersionUID类设置为类的哈希码,如下所示:public final class ClassName implements Serializable {     private static final long serialVersionUID = ClassName.class.hashCode();     [...]}这是设置课程的有效方法serialVersionUID吗
查看完整描述

2 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

Class没有明确定义的hashCode()方法,因此它没有被定义为稳定的。

这意味着,你可以(而且可能会)得到不同的结果为MyClass.class.hashCode()不同的过程之间,甚至在同一JVM和绝对不同的JVM实现和/或版本之间。

这意味着来自任何一个JVM的序列化数据可能只能在同一个JVM中使用。

现在,这可能被用作避免使用序列化进行跨VM通信的有意方式(它不是“安全机制”或类似的东西,但它可用于快速检测使用序列化进行跨VM通信的尝试)。但如果这是目标,那么使用随机数变平可能更好。


查看完整回答
反对 回复 2019-05-15
  • 2 回答
  • 0 关注
  • 433 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信