我正在浏览Java库,并在Arrays.java中看到了这段代码:
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
我只是想知道那不是吗?
return new ArrayList<T>(a);
我的猜测是它正在ArrayList.java中调用此方法:
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
if ((size = elementData.length) != 0) {
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
} else {
// replace with empty array.
this.elementData = EMPTY_ELEMENTDATA;
}
}
}
问号在Collection意味着什么?
答案 0 :(得分:4)
从Java 7开始,您可以使用return new ArrayList<>(a);
而不是return new ArrayList<T>(a);
,它将自动添加所需的类型。将其用作<>会告诉编译器它具有一种类型,并且与正确的类型匹配(无论如何泛型都只是元信息)