Класс, который принимает массив объектов, затем добавляет в ArrayList - PullRequest
0 голосов
/ 06 декабря 2018

Итак, ниже у меня есть класс Dog и класс Doghouse.Я довольно новичок в Java, поэтому мне неясно, как создать класс Doghouse, у которого есть конструктор, который принимает массив Dogs и добавляет его в ArrayList.Имеет ли смысл приведенный ниже код?

 public class Dog{
   public Dog(int number, double price, double sWeight, String origin, String webpage){
   }
}



import java.util.ArrayList;

public class Doghouse{
private ArrayList<Dog> dogList;

public Doghouse(Dog[] newDog){

    for(int i = 0; i < newDog.length; i++){
        dogList.add(newDog[i]);
    }

}

}

1 Ответ

0 голосов
/ 06 декабря 2018

В настоящее время использование dogList без инициализации вызовет NPE.

Вы можете исправить это как:

public static class Doghouse {
    private List<Dog> dogList;

    public Doghouse(Dog[] newDog) { // constructor name corrected
        this.dogList = Arrays.stream(newDog).collect(toList());
    }
}

или, может быть, проще понять

public Doghouse(Dog[] newDog) {
    this.dogList = new ArrayList<>(); // initialise first
    dogList.addAll(Arrays.asList(newDog)); // add later
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...