我不明白泛型和数组之间的联系。
我可以创建泛型类型的数组引用:
private E[] elements; //GOOD
但无法创建具有泛型类型的数组对象:
elements = new E[10]; //ERROR
但它是有效的:
elements = (E[]) new Object[10]; //GOOD
发布于 2013-09-03 05:35:45
下面是LinkedList<T>#toArray(T[])
的实现
public <T> T[] toArray(T[] a) {
if (a.length < size)
a = (T[])java.lang.reflect.Array.newInstance(
a.getClass().getComponentType(), size);
int i = 0;
Object[] result = a;
for (Node<E> x = first; x != null; x = x.next)
result[i++] = x.item;
if (a.length > size)
a[size] = null;
return a;
}
简而言之,您只能通过Array.newInstance(Class, int)
创建泛型数组,其中int
是数组的大小。
发布于 2013-09-03 05:49:25
已选中:
public Constructor(Class<E> c, int length) {
elements = (E[]) Array.newInstance(c, length);
}
或取消选中:
public Constructor(int s) {
elements = new Object[s];
}
https://stackoverflow.com/questions/18581002
复制相似问题