有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    正在setter方法中设置ArrayList引用:

    public void setLocationCells(ArrayList<String> loc)
    {
        locationCells = loc;
    }
    

    如果未调用此方法,并且在尝试使用ArrayList之前未设置引用,则代码将抛出NullPointerException

    旁注:这看起来不是安全代码,因为它可能很容易错误运行,因此NPE很容易创建。最好在构造函数中设置ArrayList(列表更好)