2011-10-01 93 views
1

我在某種數據結構中使用泛型。我必須存儲int x,int yValue value,其中value是通用類型。仿製藥和類型

我試圖將所有這些在一個對象調用NodeData然後在另一個類中,創建的NodeData的一個ArrayList,(因此在陣列列表中的每個元素將包括保持一個x,y和價值。

NodeData如下:

public class NodeData<Value> { 

    private int x; 
    private int y; 
    private Value value; 

在另一大類,數組列表中的實例如下:ArrayList<NodeData> items = new ArrayList<NodeData>();

我得到一個錯誤的一個列表說:NodeData is a raw type. References to NodeData<Value> should be parametrized.爲什麼呢? NodeData已被參數化爲NodeData<Value>

謝謝

+0

當你做NodeData 它假設你將代替一些真實的類的價值。您定義它的方式值可以是任何類型,可能不是您想要的。 – MeBigFatGuy

+0

你沒有得到一個錯誤,而是一個***警告***,這是一個很大的區別。你在做什麼是不安全的,但如果你保重,可能會有效。我建議你遵循duffymo的建議,因爲這是泛型的目的 - 允許編譯時類型檢查。 –

回答

4

不在你的數組聲明中。試着這樣說:

List<NodeData<Foo>> list = new ArrayList<NodeData<Foo>>(); 

其中Foo是要用於該實例的Value類型。

2

在其他類,你必須指定你打算到位泛型類型Value

例如使用類型。

ArrayList<NodeData<String>> items = new ArrayList<NodeData<String>>();. 
+0

不起作用。它表示「綁定不匹配:類型值不是綁定參數的有效替代」<數值擴展可比較<?超值「的類型NodeData '這是爲什麼?我不明白 – darksky

+0

@Nayefc我在最後錯過了一個'>'。現在已經修復了。 –

+0

這不是我沒有複製和粘貼的問題,我自己添加了它。它現在只是自己消失了,也許花了一些時間讓我的IDE意識到這一點。現在感謝。 – darksky