jrh*_*ath 2 java arrays generics collections
为什么Collection<E>.toArray()(非参数化方法)返回Object[]?
这是有意识地做出决定的吗?是否有任何理由为什么该toArray()方法无法返回a E[],如果它想要?
这是因为在T不知道类型的情况下无法实例化类型数组Class<T>.与此对比toArray(T[] array),具有以下来源(示例来自LinkedList).请注意,传入的数组不仅用作可能的容器,还可以实例化该类型的新数组.如果T不是超类,则此代码抛出异常E; 如果无法将对象添加到数组中.
@SuppressWarnings("unchecked")
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |