Num*_*tor 8 java arrays list toarray
我定义了 List<Integer> stack = new ArrayList<Integer>();
当我试图通过以下方式将其转换为数组时:
Integer[] array= stack.toArray();
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from Object[] to Integer[].
Run Code Online (Sandbox Code Playgroud)
为什么?它与Integer完全相同 - Integer.当这些类是父子关系时,它不像这种通用情况
我试图做铸造:
Integer[] array= (Integer[]) stack.toArray();
Run Code Online (Sandbox Code Playgroud)
但在这里我得到这个错误:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
Run Code Online (Sandbox Code Playgroud)
问题是什么?
Thi*_*ilo 12
由于类型擦除,ArrayList在运行时不知道它的泛型类型,因此它只能为您提供最通用的Object [].您需要使用另一个toArray方法,该方法允许您指定所需的数组类型.
Integer[] array= stack.toArray(new Integer[stack.size()]);
Run Code Online (Sandbox Code Playgroud)