首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建泛型数组?

如何创建泛型数组?
EN

Stack Overflow用户
提问于 2013-09-03 05:30:45
回答 2查看 113.8K关注 0票数 86

我不明白泛型和数组之间的联系。

我可以创建泛型类型的数组引用:

代码语言:javascript
运行
复制
private E[] elements; //GOOD

但无法创建具有泛型类型的数组对象:

代码语言:javascript
运行
复制
elements = new E[10]; //ERROR

但它是有效的:

代码语言:javascript
运行
复制
elements = (E[]) new Object[10]; //GOOD
EN

回答 2

Stack Overflow用户

发布于 2013-09-03 05:35:45

下面是LinkedList<T>#toArray(T[])的实现

代码语言:javascript
运行
复制
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是数组的大小。

票数 3
EN

Stack Overflow用户

发布于 2013-09-03 05:49:25

已选中:

代码语言:javascript
运行
复制
public Constructor(Class<E> c, int length) {

    elements = (E[]) Array.newInstance(c, length);
}

或取消选中:

代码语言:javascript
运行
复制
public Constructor(int s) {
    elements = new Object[s];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18581002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档