来自“Java Generic and Collections”一书,第 1.4 节有这个代码片段
class Lists {
public static <T> List<T> toList(T... arr) {
List<T> list = new ArrayList<T>();
for (T elt : arr)
list.add(elt);
return list;
}
}
然后是这样的说法:
当一个类型参数被传递给一个泛型方法调用时,它出现在左边的尖括号中,就像在方法声明中一样。Java 语法要求类型参数只能出现在使用点分形式的方法调用中。即使 toList 方法定义在调用代码的同一个类中,我们也不能将其缩短如下:
List<Integer> ints = <Integer>toList(); // compile-time error
这是非法的,因为它会混淆解析器。
所以我试图理解为什么会出现编译器时错误。