Java7泛型的“菱形”语法

在Java SE 7之前,声明泛型对象的代码如下:

List<String> list = new ArrayList<String>();

而在Java 7中,可以使用如下代码:

List<String> list = new ArrayList<>();

因为编译器可以从前面(List)推断出推断出类型参数,所以后面的ArrayList之后可以不用写泛型参数,只用一对空着的尖括号就可以。Java 7 只支持有限的类型推断:只有构造器的参数化类型在上下文中被显著的声明了,才可以使用类型推断,否则不行,例如:

List<String> list = new ArrayList<>();

list.add("A");

list.addAll(new ArrayList<>()); //这样声明不合法

List<? extends String> list2 = new ArrayList<>(); //这样声明合法

list.addAll(list2);

阅读更多
换一批

没有更多推荐了,返回首页