2017-01-27 57 views
0

我有一個代碼,其MCVE是這樣什麼是Java中的通用數組?

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

閱讀[這個答案](http://stackoverflow.com/a/18581313/303810),特別是**如何創建一個類型列表 []?**部分 – lexicore

+0

@JoeClay有什麼問題'LinkedList []'?你怎麼知道OP不打算有一系列的列表? – lexicore

+0

@JoeClay我不明白你的意思。 arr是節點的鏈表列表。所以'新LinkedList [4]'似乎對我來說是正確的。不刪除括號只會創建一個節點鏈表? –

回答

1

請檢查下面的答案:

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

既然是有點大,我會在這裏總結一下相關的部分。

LinkedList<Node>[]是一個通用的陣列,因爲它具有一般類型的組分。與此consruct的問題是,你能做到以下幾點:

LinkedList<Node>[] listsOfNodes = new LinkedList<Node>[1]; 
Object[] items = listsOfNodes; 
items[0] = new LinkedList<String>(); 
在這一點上 listsOfNodes[0]應該有類型 LinkedList<Node>將是 LinkedList<String>實例

左右。