1

我对 serialVersionUID 感到困惑,有人告诉我如果我没有定义 serialVersionUID 这会影响性能,所以我需要总结一下我的知识

据我了解,在 Java 编译器中,如果您需要在 2 个类之间进行通信,或者您需要在 1 个任务与 1 个任务之间使用对象通信。当发送者发送对象时,应该在发送者和接收者中生成serialVersionUID,将serialVersionUID放入对象中,然后接收验证对象是否正确接收者将继续该过程如果不是它会抛出异常

所以如果我没有输入serialVersionUID,那么java编译器将根据我的理解在运行时定义它,所以我认为执行Java时不会影响性能

我希望我的理解应该是正确的如果不是请帮助本网站的其他人提出建议

谢谢

4

3 回答 3

4

这些细节的答案总是可以在规范中找到。

如果可序列化类没有显式声明 serialVersionUID,则序列化运行时将根据类的各个方面为该类计算默认的 serialVersionUID 值,如 Java(TM) 对象序列化规范中所述。

有关更多信息,请访问 java.io.Serializable。

答案是它会,但真正的问题是多少?

这个问题的答案可以在这篇文章中找到进入连载神话的迷雾

结论是影响不那么相关,但代码管理的成本可能更大。与往常一样,此类问题的最终答案取决于项目规模和应用程序将运行的环境。

于 2013-04-02T10:37:22.857 回答
0

首先,serialVersionID 应该生成/添加到实现Serializable接口的类中,它有助于对象的反序列化。因此,您不必担心可能的性能问题,但绝对应该考虑为您的 Serializable 类提供 serizalVersioItd。

此线程中,您可以了解 serialVersionID 的用途。

于 2013-04-02T10:40:24.990 回答
0

所以如果我没有输入serialVersionUID,那么java编译器将根据我的理解在运行时定义它,所以我认为执行Java时不会影响性能

这种说法没有意义。编译器在运行时不能做任何事情。如果省略它,JVM将在任何特定的ObjectInputStreamObjectOutputStream.

开销并不显着。

于 2013-04-03T01:57:31.507 回答