0

我正在尝试将一个类的实例(基本上是一个节点)添加到我的数组列表中。我该怎么做呢?这是我所拥有的:

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 似乎不起作用,我收到错误:找不到节点的符号。

4

5 回答 5

1

这些中的任何一个都应该起作用:

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

或者

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

但是,请记住在尝试使用它们之前name进行实际初始化!node此外,如果您打算只Sentence在 ArrayList 中存储对象,则可以将其定义为ArrayList<Sentence>

ArrayList<Sentence> holder= new ArrayList<Sentence>();
于 2013-10-31T23:00:01.760 回答
1

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

在添加 doholder.add(new Sentence(name));时,因为当您这样做时holder.add(new node(name));,编译器无法理解 anode是什么。node只是类型的引用Sentence而已。

于 2013-10-31T23:04:08.580 回答
0

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

holder.add(new Sentence(name));
于 2013-10-31T22:59:17.267 回答
0

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

name = "foo";
node = new Sentence(name);
holder.add(node);
于 2013-10-31T23:03:10.067 回答
0

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

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

或者

holder.add(new Sentence(name));

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

于 2013-10-31T23:04:52.207 回答