我正在尝试将类的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似乎无法正常工作,我得到错误:无法找到节点的符号。
答案 0 :(得分:1)
其中任何一个都应该有效:
holder.add(new Sentence(name)); //if name is initialized
或
holder.add(node); //if node is initialized
但是,请记住在尝试使用它们之前实际初始化name
和node
!此外,如果您只想在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
是变量名而不是类型。初始化name
和node
,然后可以将节点参考添加到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()
的参数传递。