public static List<Long> abc = new ArrayList<Long>(){{ //Asks for SerialVersionUID
        abc.add(5L);
        abc.add(7L);
    }};

public static List<Long> abc = new ArrayList<Long>();//Does not need SerialVersionUID
    static{
        abc.add(5L);
        abc.add(7L);
    }

最佳答案

在第二个示例中,您将实例化一个已经定义了serialVersionUID(即ArrayList)的类。

在第一个示例中,您要定义ArrayList的匿名子类,并且您的子类需要定义自己的serialVersionUID。双括号初始化实际上定义了一个匿名类并不总是很明显。

关于java - 为什么双括号初始化要求提供SerialVersionUID?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1926641/

10-10 15:57