<分区>
我对 toArray 方法有疑问。在此示例中,我使用 Integer 并通过转换 Integer 来解决它,但该方法应该适用于所有类型,而无需在 main 中进行转换。
为什么我不能在我的主要方法中使用这两个中的一个?
arr = (T[]) a.toArray(arr) ;
甚至
arr = a.toArray(arr)
我遇到类型不匹配:无法从对象[] 转换为整数[]
size() 和 addFirst() 都有效。
public static void main(String[] args) {
ArrayDeque a = new ArrayDeque(5);
a.addFirst(1);
a.addFirst(2);
Integer [] arr = new Integer[a.size()];
arr= (Integer[]) a.toArray(arr);
System.out.println(Arrays.toString(arr));
}
public class ArrayDeque<E> implements IDeque<E> {
private int counter= 0;
private E[] deque;
@SuppressWarnings("unchecked")
public ArrayDeque(int size) {
deque = (E[]) new Object[size];
}
public <E> E[] toArray(E[] a) {
return (E[]) Arrays.copyOf(deque, counter, a.getClass());
}
}