2013-10-31 56 views
0

我想添加一個類的instanes(基本上是一個節點)到我的arraylist。我如何去做這件事?繼承人我有什麼:將類的實例添加到arraylist

public class Sentence { 
    String word; 


    public Sentence(String word){ 
     this.word=word; 

    } 

} 

,然後在另一個類:

ArrayList<Object> holder= new ArrayList<Object>(); 
Sentence node; 
String name; 
//Something to initialize/set name 
holder.add(new node(name)); 

卜那似乎沒有工作,我得到錯誤:找不到節點符號。

+0

您不定義節點是什麼。但是,你的確定義了一個句子。 – Enigmadan

回答

0

是什麼節點,構造函數可以通過類名調用,這是Sentence

holder.add(new Sentence(name)); 
1

這些任選其一:

holder.add(new Sentence(name)); //if name is initialized 

holder.add(node); //if node is initialized 

然而,記得在嘗試之前實際初始化namenode 使用它們!另外,如果你打算只存儲在ArrayList中Sentence對象,你可以只把它定義爲ArrayList<Sentence>

ArrayList<Sentence> holder= new ArrayList<Sentence>(); 
0

node是變量名,而不是一個類型。初始化namenode則節點引用可以當你寫這一點,你需要指定Arraylist還能持有什麼類型的數據添加到List

name = "foo"; 
node = new Sentence(name); 
holder.add(node); 
1

ArrayList<Object> holder= new ArrayList<Object>();這裏。在你的情況下,當你試圖將Sentence類型添加到你的ArrayList中時,你應該改變它。 ArrayList<Sentence> holder= new ArrayList<Sentence>(); 指定ArrayList持有人將持有Sentence類型的元素。

雖然增加了做holder.add(new Sentence(name));,因爲當你做holder.add(new node(name));編譯器無法理解node是什麼。 node只是Sentence類型的參考。

0

您可以將實例傳遞給對象或不傳遞。無論哪種方式的工作原理:

Sentence node = new Sentence(name); 
holder.add(node); 

OR

holder.add(new Sentence(name)); 

其中使用的決定是取決於你是否希望使用node實例不是通過它作爲參數傳遞給其他new Node()別的東西。