我有一个代码,其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>
类型。
有人可以解释这个概念吗?
答案 0 :(得分:1)
请检查以下答案:
由于它有点大,我将在此总结相关部分。
LinkedList<Node>[]
是一个通用数组,因为它具有该组件的泛型类型。这个结构的问题在于您可以执行以下操作:
LinkedList<Node>[] listsOfNodes = new LinkedList<Node>[1];
Object[] items = listsOfNodes;
items[0] = new LinkedList<String>();
所以,此时listsOfNodes[0]
应该是类型为LinkedList<Node>
的{{1}}的实例。