Java双支撑初始化

Ada*_*tan 3 java eclipse double-brace-initialize

我重构了以下对象初始化:

Req r = new Req();
r.set_f1("A");
r.set_f2(123);
r.set_f3(123.456);
Run Code Online (Sandbox Code Playgroud)

成:

Req r = new Req() {{
    set_f1("A");
    set_f2(123);
    set_f3(123.456)
}};
Run Code Online (Sandbox Code Playgroud)

第二个示例引发以下Eclipse警告:

serializable类不声明long类型的静态final serialVersionUID字段

我认为这些代码示例应该是等效的 - 有什么区别?

Irf*_*rfy 6

第二个创建一个匿名子类,并使用一个未命名的初始化器初始化它.如果是Req可序列化的,那么它的任何子类都是,因此应该定义一个serialVersionUID.