gpt4 book ai didi

java - 在实现 Serializable 的类中声明 private static final long serialVersionUID = xxxxxxxxL 有什么区别

转载 作者:行者123 更新时间:2023-11-30 07:32:13 27 4
gpt4 key购买 nike

在实现 Serializable 的类中声明 private static final long serialVersionUID = 1945670924947820279L; 有什么效果?

我记得有人可以在不指定 long 或只是 1L 的情况下实现该类。有什么区别?

import java.io.Serializable;

public class KAS implements Serializable
{
private static final long serialVersionUID = 1945670924947820279L;
}

最佳答案

如果您不指定版本,JVM 将使用一些内部规则来尝试自行计算出序列化对象与它自己的类加载器中的版本是否兼容。这可能会导致有人拥有过时的 jar 但反序列化仍然有效的情况,因为该类的较新版本没有以被视为不兼容的方式更改它。 (也许您修复了方法实现中的错误,但保留了所有字段。)

或者,如果您希望拥有过时版本的人仍然能够使用数据,您可以通过将值设置为 1 并且从不更改它来利用它。

关于java - 在实现 Serializable 的类中声明 private static final long serialVersionUID = xxxxxxxxL 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6727870/

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