有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我在创建我们的项目时收到了一个非常奇怪的警告。 该语句缺少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) 个答案

  1. # 1 楼答案

    SomeClass$1SomeClass中包含的第一个匿名类。所以在SomeClass的代码中的某个地方,您使用了一个anonymous class,例如:

    SomeType instance = new SomeType {
        public ReturnType someMethod() {
            // ...implementation...
        }
    };
    

    警告是,生成的匿名类没有serialVersionUID,这可能会导致序列化问题。(我猜匿名类的基类必须是^{

    你可以给它一个:

    SomeType instance = new SomeType {
        private static final long serialVersionUID = 12345678L; // Change number as appropriate
    
        public ReturnType someMethod() {
            // ...implementation...
        }
    };
    

    。。。尽管关于可序列化嵌套类是否是最佳实践存在一些争论(onetwo