Почему мы можем использовать методы ArrayList, не создавая новый объект ArrayList? - PullRequest
0 голосов
/ 17 июня 2019

Мы должны создать объект любого класса, чтобы использовать их функции, если это не статические функции. Но почему нам не нужно создавать объект 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 голос
/ 17 июня 2019

Ссылка ArrayList устанавливается в методе установки:

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

Если этот метод не вызывается и ссылка не установлена ​​перед попыткой использования ArrayList, код выдаст исключение NullPointerException.

Примечание: Это не выглядит как безопасный код, так как он может легко работать некорректно, и поэтому NPE легко создать. Возможно, лучше установить ArrayList (список еще лучше) в конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...