在构建我们的项目时,我有一个非常奇怪的警告。
声明缺少serialVersionUID
但实际上所讨论的类确实定义了这样的。
有人可以解释以下错误吗?
[WARNING] /build/location/com/our/company/package/SomeClass.java:[178,56] [serial] serializable class <anonymous com.our.company.package.SomeClass$1> has no definition of serialVersionUID
我不确定SomeClass$1
在这种情况下的含义。
答案 0 :(得分:1)
SomeClass$1
是SomeClass
中包含的第一个匿名类。因此,SomeClass
的代码中的某个位置使用anonymous class,例如:
SomeType instance = new SomeType {
public ReturnType someMethod() {
// ...implementation...
}
};
警告是生成的匿名类没有serialVersionUID
,这可能导致序列化问题。 (我想你的匿名类的基类必须是serializable
。)
你可以给它一个:
SomeType instance = new SomeType {
private static final long serialVersionUID = 12345678L; // Change number as appropriate
public ReturnType someMethod() {
// ...implementation...
}
};