我们必须创建任何类的对象才能使用其功能,除非这些功能是静态功能。但是为什么我们不需要创建ArrayList对象来使用其方法(例如add,contains等)。
ArrayList<Egg> myList = new ArrayList<Egg>();
myList.add(a);
根据我的理解,myList只是一个变量,它保存ArrayList类类型的ArrayList对象的引用。再次,我们如何在不将对象传递给myList的情况下编写以下内容。
ArrayList<Egg> myList;
myList.add(a);
完整代码:
import java.util.ArrayList;
public class DotCom {
private ArrayList<String> locationCells;
public void setLocationCells(ArrayList<String> loc)
{
locationCells = loc;
}
public String checkYourself(String userInput)
{
String result = "miss";
int index = locationCells.indexOf(userInput);
if (index >= 0) {
locationCells.remove(index);
if (locationCells.isEmpty()) {
result = "kill";
}
else
{
result = "hit";
}
}
return result;
}
//TODO: all the following code was added and should have been included in the book
private String name;
public void setName(String string) {
name = string;
}
}
PS 我指的是第一本Java书。
答案 0 :(得分:1)
在setter方法中设置了ArrayList引用:
public void setLocationCells(ArrayList<String> loc)
{
locationCells = loc;
}
如果未调用此方法,并且在尝试使用ArrayList之前未设置引用,则代码将引发NullPointerException。
旁注:这看起来不是安全的代码,因为它可以容易错误地运行,因此很容易创建NPE。最好在构造函数中设置ArrayList(List甚至更好)。