public class Test {
public static void main(String[] args) {
System.out.println(new CountingGenerator.String(12).next());
List<Integer> list=new ArrayList<Integer>();
list.add(new Integer(1));
list.add(new Integer(2));
Integer[] c = {1,3,3};
//throw an exception:
c = (Integer[]) list.toArray();
}
}
Интересно, почему это произошло? Integer является подклассом Object, поэтому он должен быть Ok вместо этого! пожалуйста, ответьте мне глубоко! Я хочу знать почему? какой принцип?
Изменить строку
c=(Integer[]) list.toArray();
в
c= list.toArray(c); // add c as parameter
В вашем list.toArray();
возвращает Object[]
и JVM не знает, как слепо опускать Object[]
в Integer[]
.
public Object[] toArray() //return Object type array
public <T> T[] toArray(T[] a) //Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array