可能重复: Double brace initialisation (anonymous inner class) with diamond operator
使用Java 7,为什么会出现以下问题
final List<String> a = new ArrayList<>() {
{
add("word");
}
};需要显式类型声明,如
final List<String> a = new ArrayList<String>() {
{
add("word");
}
};发布于 2012-10-12 15:44:24
一般来说,IMHO避免了类型推断。
无论如何,只有当编译器不需要知道使用了哪种泛型类型时,<>才能工作。在匿名类的情况下,需要提供实际的类型,因为编译器没有推断类型。
<>有效地关闭了类型检查,而不是提供类型推断。匿名类存储实际的泛型类型,因此您必须提供它。
List<String> a = new ArrayList<>()就像
@SuppressWarnings("unchecked")
List<String> a = new ArrayList()但是对于匿名子类,编译器需要给它一个泛型类型。
https://stackoverflow.com/questions/12862507
复制相似问题