【问题标题】:What are generic arrays in Java?Java中的泛型数组是什么?
【发布时间】:2017-06-13 02:28:41
【问题描述】:

我有一个代码,它的MCVE是这样的

import java.util.LinkedList;

public class Test
{
    LinkedList<Node>[] arr;

    Test(){
        arr = new LinkedList<Node>[4];
    }

    public static void main(){
    }
}

class Node{   
}

我在哪里得到这个错误

error: generic array creation
        arr = new LinkedList<Node>[4];
              ^

我查找错误并找到了这两个帖子 How to create a generic array in Java?Error: Generic Array Creation

但我不明白泛型数组是什么。我猜(从我从两篇文章中得到的)这意味着数组不知道它将存储什么类型,但在我的情况下,数组被指定为LinkedList&lt;Node&gt; 类型。

有人能解释一下这个概念吗?

【问题讨论】:

  • 阅读this answer,尤其是创建一个List[]类型的数组怎么样?部分
  • @JoeClay LinkedList&lt;Node&gt;[] 有什么问题?你怎么知道 OP 不打算有一个列表数组?
  • @JoeClay 我不明白你的意思。 arr 是节点链表的数组。所以new LinkedList&lt;Node&gt;[4] 对我来说似乎是正确的。删除括号不会只创建一个节点链表吗?
  • 啊,我无法从您的问题中看出您是否混淆了语法,或者您是否真的打算拥有一个列表数组。我的错!

标签: java arrays


【解决方案1】:

请检查以下答案:

https://stackoverflow.com/a/18581313/303810

由于篇幅有点大,这里把相关部分总结一下。

LinkedList&lt;Node&gt;[] 是一个泛型数组,因为它具有组件的泛型类型。这个结构的问题是你可以做以下事情:

LinkedList<Node>[] listsOfNodes = new LinkedList<Node>[1];
Object[] items = listsOfNodes;
items[0] = new LinkedList<String>();

因此,此时应具有 LinkedList&lt;Node&gt; 类型的 listsOfNodes[0] 将是 LinkedList&lt;String&gt; 的一个实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多