为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建泛型数组?

如何创建泛型数组?

牛魔王的故事 2019-07-02 16:16:47
如何创建泛型数组?我不明白泛型和数组之间的联系。我可以用泛型类型创建数组引用:private E[] elements; //GOOD但不能创建具有泛型类型的数组对象:elements = new E[10]; //ERROR但它起作用了:elements = (E[]) new Object[10]; //GOOD
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

以下是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数组的大小。


查看完整回答
反对 回复 2019-07-02
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

问题是运行时泛型类型被删除。所以new E[10]相当于new Object[10].

这将是危险的,因为可以将数组中的其他数据放入E类型。这就是为什么您需要显式地说出您想要的类型。


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 1302 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信