java为什么我们可以使用ArrayList的方法而不创建新的ArrayList对象?
我们必须创建任何类的对象来使用它们的功能,除非它们是静态功能。但是为什么我们不需要创建一个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书
# 1 楼答案
正在setter方法中设置ArrayList引用:
如果未调用此方法,并且在尝试使用ArrayList之前未设置引用,则代码将抛出NullPointerException
旁注:这看起来不是安全代码,因为它可能很容易错误运行,因此NPE很容易创建。最好在构造函数中设置ArrayList(列表更好)