将类的实例添加到arraylist

时间:2013-10-31 22:57:51

标签: java class object arraylist instance

我正在尝试将类的instanes(基本上是一个节点)添加到我的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));

Bu似乎无法正常工作,我得到错误:无法找到节点的符号。

5 个答案:

答案 0 :(得分: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>();

答案 1 :(得分:1)

ArrayList<Object> holder= new ArrayList<Object>();在您写这篇文章时,您需要指定Arraylist可以容纳的数据类型。在您的情况下,当您尝试将Sentence类型添加到ArrayList时,您应将其更改为。 ArrayList<Sentence> holder= new ArrayList<Sentence>(); 指定ArrayList持有人将持有Sentence类型的元素。

在添加do holder.add(new Sentence(name));时,因为当你执行holder.add(new node(name));时,编译器无法理解node是什么。 node只是Sentence类型的引用。

答案 2 :(得分:0)

是什么节点,构造函数可以通过类名调用,即Sentence

holder.add(new Sentence(name));

答案 3 :(得分:0)

node是变量名而不是类型。初始化namenode,然后可以将节点参考添加到List

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

答案 4 :(得分:0)

您可以将实例传递给对象。无论哪种方式都有效:

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

OR

holder.add(new Sentence(name));

使用哪个决定取决于您是否希望将node实例用于其他内容,而不是将其作为new Node()的参数传递。