为什么双括号初始化要求SerialVersionUID? [英] Why does double brace initialization asks for SerialVersionUID?
本文介绍了为什么双括号初始化要求SerialVersionUID?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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
)。
In the second example, you're instantiating a class that already has a defined serialVersionUID
(i.e. ArrayList
).
在第一个例子中,你要定义一个 ArrayList
的匿名子类,你的子类需要有它的拥有 serialVersionUID
已定义。双括号初始化实际上定义了一个匿名类并不总是很明显。
In the first example, you're defining an anonymous subclass of ArrayList
, and your subclass needs to have its own serialVersionUID
defined. It's not always obvious that double-brace initialization actually defines an anonymous class.
这篇关于为什么双括号初始化要求SerialVersionUID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文