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/