我正在尝试使用Star类中的addStar函数向星星arraylist添加一些字符串名称。 但是我遇到了这样的错误:
Eclipse告诉我字符串参数是不可接受的,所以我该怎么做?类型arraylist中的方法add(Star)不适用于此参数。
import java.util.ArrayList;
import java.util.Collection;
public class Star {
public static String name;
public static ArrayList<Star> stars=new ArrayList<>();
public Star(String name) {
this.name=name;
}
public static void addStar(String name) {
stars.add(name);
}
}
答案 0 :(得分:1)
很遗憾,您的错误是因为您将name
设为static
。由于您将name
设为static
,这意味着该名称只能容纳一件事。因此,每当你创建一个新的Star对象时,name
的值将变为最新的Star对象所拥有的值,因此会出现&#34;失去星星&#34;,如你所说,因为由于name
为static
,因此只能有一个名称。
更正的代码应为
public class Star {
public String name;
public static ArrayList<Star> stars=new ArrayList<>();
public static void main(String [] args) {
addStar("some name");
addStar("some second name");
System.out.println(stars);
}
public String getName() {
return name;
}
public Star(String name) {
this.name=name;
}
public static void addStar(String name) {
Star s1=new Star(name);
stars.add(s1);
}
public String toString() {
String res = "";
res+=getName();
return res;
}
}
如您所见,我制作了toString()
方法。在main
方法中,打印时
stars
,它会自动调用toString()
,但此处我会覆盖默认的toString()
方法
这样stars
ArrayList将以我们想要的方式打印出来,这是默认方式
只需打印存储对象的内存中的位置。如果你有任何
问题,请继续问。