2016-03-07 72 views
-1

我有這樣的代碼增加Java集合

public class TupleSpace implements aTupleSpace { 
private Collection<aTuple> theSpace; 
public TupleSpace() { 
    theSpace 
} 

public void out(aTuple v) { 
    theSpace.add(v);} 

的。新增導致一個錯誤,我認爲它是因爲對。新增泛型集合類型沒有定義?或者是因爲我不是正確理解該行:

private Collection<aTuple> theSpace; 

我必須保留此行相同,但可以對出法或

我只是希望能夠給任何變化班上其他同學將東西添加到集合中並搜索集合

+2

是'aTuple'類嗎?如果是這樣,那應該沒問題 - 儘管你的構造函數體被破壞了。 '集合'有一個'add(E)'方法,所以你的'out'方法很好。 (我強烈建議您儘管開始遵循Java命名約定...) –

+1

錯誤是什麼? – nnunes10

+0

空指針異常 –

回答

2

集合只是一個接口。

它定義了你可以用theSpace做什麼,並且與theSpace實際上有些獨立。它可能是一個List或Map或完全不同的東西。

Collection.add(E e)的確是一種對所有集合都通用的方法。實際的實施可能會有所不同。

但是,private Collection<aTuple> theSpace;只是聲明變量。 當您創建TupleSpace的實例時,它將被設置爲null。 這是您嘗試使用theSpace時引發的NullPointerException的原因。

因此,您需要創建一個具體的Collection實例並將其指定給theSpace,然後才能使用它(例如添加對象)。

有很多Collection類型可以隨SDK一起使用。 選擇一個適合您的用例。下面是一個使用ArrayList的例子:

// ... 
public TupleSpace() { 
    this.theSpace = new ArrayList<aTuple>(); 
} 
// ...