以下代码抛出java.lang.ArrayStoreException
异常。据我所知,编译器应该在我使用generics
时生成错误或警告。
请检查下面的代码并找到注释行。
public class Test1 {
public static void main(String[] args) {
Collection<Number> nums = new ArrayList<Number>();
nums.add(new Integer(1));
nums.add(new Long(-1));
//every thing is fine here
Number[] aa = nums.toArray(new Number[0]);
for (Number num : aa) {
System.out.println(num);
}
// Even if generics are there,no warning or error is reported by complier
Integer[] bb= nums.toArray(new Integer[nums.size()]);
for (Integer integer : bb) {
System.out.println(integer);
}
}
}
请帮助我理解这种行为。你能帮我理解如何解决这个问题吗?
答案 0 :(得分:7)
Collection.toArray()
方法定义为:
<T> T[] toArray(T[] a);
意味着类型参数T
仅将参数类型绑定到返回值的类型。它独立于封闭类的任何类型参数(E
的情况下,元素类型为Collection
。