什么是Java中的通用数组?

时间:2017-01-27 11:55:52

标签: java arrays

我有一个代码,其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<Node>类型。

有人可以解释这个概念吗?

1 个答案:

答案 0 :(得分:1)

请检查以下答案:

  

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

由于它有点大,我将在此总结相关部分。

LinkedList<Node>[]是一个通用数组,因为它具有该组件的泛型类型。这个结构的问题在于您可以执行以下操作:

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

所以,此时listsOfNodes[0]应该是类型为LinkedList<Node>的{​​{1}}的实例。