警告 - 匿名子类(?)没有串行版本UID

时间:2014-07-21 08:43:22

标签: java warnings

在构建我们的项目时,我有一个非常奇怪的警告。 声明缺少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在这种情况下的含义。

1 个答案:

答案 0 :(得分:1)

SomeClass$1SomeClass中包含的第一个匿名类。因此,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...
    }
};

...虽然对于是否具有可序列化的嵌套类是最佳做法存在争议(onetwo)。