gpt4 book ai didi

java - 如何为匿名类生成 serialVersionUID?

转载 作者:行者123 更新时间:2023-11-30 11:15:47 25 4
gpt4 key购买 nike

这是我试过的:

我使用 -Xlint:serial 选项构建项目,但收到此警告:

MyClass.java:42: warning: [serial] serializable class <anonymous mypackage.MyClass$1> has no definition of serialVersionUID
SerializableClass myObject = new SerializableClass() {
1 warning

然后复制匿名类名作为serialver的参数:

>serialver -classpath dist\Example.jar mypackage.MyClass$1

mypackage.MyClass$1: static final long serialVersionUID = 23L;

我不打算序列化它,而且我读到不建议序列化匿名类的对象。

将其保留为 1L 还是根本不定义 serialVersionUID 是更好的做法?

最佳答案

我建议省略 serialVersionUID,如果你想编译无警告,在 myObject< 的声明中添加 @SuppressWarnings("serial")/.

原因是 serialVersionUID 是一种用于维护跨版本串行兼容性的机制,并且由于您从不序列化对象,因此串行兼容性无关紧要。

此外,由于多种原因,序列化匿名内部类是有问题的。生成的类名是串行格式的一部分,是特定于编译器的,如果文件的其余部分被修改和重新编译,它可能会不受控制地更改。匿名内部类还包含封闭实例和捕获的局部变量的隐藏字段,如果它们完全可序列化,它们也将包含在序列化形式中。

关于java - 如何为匿名类生成 serialVersionUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25201925/

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