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

我注意到在我公司的代码库中,一个常见的模式是将serialVersionUID类设置为类的哈希码,如下所示:

public final class ClassName implements Serializable {

    private static final long serialVersionUID = ClassName.class.hashCode();

    [...]}

这是设置课程的有效方法serialVersionUID


呼啦一阵风
浏览 434回答 2
2回答

梵蒂冈之花

Class没有明确定义的hashCode()方法,因此它没有被定义为稳定的。这意味着,你可以(而且可能会)得到不同的结果为MyClass.class.hashCode()不同的过程之间,甚至在同一JVM和绝对不同的JVM实现和/或版本之间。这意味着来自任何一个JVM的序列化数据可能只能在同一个JVM中使用。现在,这可能被用作避免使用序列化进行跨VM通信的有意方式(它不是“安全机制”或类似的东西,但它可用于快速检测使用序列化进行跨VM通信的尝试)。但如果这是目标,那么使用随机数变平可能更好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java