java - 1L serialVersionUID 是什么意思?我什么时候可以使用这个默认值 1L?

标签 java

有 3 种方式定义 serialVersionUID :

1. private static final long serialVersionUID = 1L; (Default)
2. private static final long serialVersionUID = -8940196742313994740L; (Generated)
3. Don't define serialVersionUID and let the JVM define it at runtime. @Lance Java

但是我不明白第一种方式!

我已经看到有人为源代码中的所有 java 类定义了“serialVersionUID=1L”。

什么意思?有用吗?

如果所有的类都有相同的serialVersionUID 1L,没有问题吗?

最佳答案

What is the meaning? Is that useful?

是的。 serialVersionUID 的要点是让程序员控制类的哪些版本在序列化方面被认为是不兼容的。只要 serialVersionUID 保持不变,序列化机制就会尽最大努力翻译序列化实例,这可能不是您想要的。如果您进行语义更改导致旧版本不兼容,则可以更改 serialVersionUID 以使反序列化旧实例失败。

If all classes have the same serialVersionUID 1L, is there no problem?

否 - serialVersionUID 每个类

关于java - 1L serialVersionUID 是什么意思?我什么时候可以使用这个默认值 1L?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850907/

相关文章:

java - 无法在 java.awt.BufferdImage/Graphics2D 中获得正确的文本高度

java - 将所有依赖的jar文件存储在目录中

java - 远程业务接口(interface)的 ejb 引用解析错误 - Glassfish

java - stripe支付时如何正确设置金额?

java - 使用 Mockito : Matching multiple arguments in a private static method?

java - HikariCP - 空闲超时属性未覆盖

jsp注释中的Java代码。怎么运行的?

java - 如何为 SOAP 请求中的子元素设置 Type 属性?

Java lambda 返回一个 lambda

java - 这段代码中哪个线程正在 hibernate ?主线程还是 t1 线程?