Как получить только что созданный объект внутри класса
Есть класс:
public class Person {
private static ArrayList<Person> persons = new ArrayList<Person>(10);
private final int id;
// Поля...
public Person(){
// Конструктор
}
}
Могу ли я при создании объекта класса записать его в ArrayList этого же класса?
Пока на ум пришло такое решение:
- Создать
static
метод, который создает, добавляет объектPerson
вArrayList
и возвращает его. - В главном методе присваиваем переменной типа
Person
результат работы созданного метода.
Является ли это решение лучшим?
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
В конструкторе уже можно будет обращаться к только что созданному объекту через this
, однако следует отметить, что у данного класса есть как минимум одно финальное поле id
, которое должно быть проинициализировано в конструкторе, поэтому он должен выглядеть следующим образом:
public class Person {
private static List<Person> persons = new ArrayList<>(10);
private final int id;
// другие поля
public Person(int id) {
this.id = id;
persons.add(this);
}
}
Тогда дефолтный конструктор (без параметров) можно в простейшем случае (к примеру в однопоточном приложении) определить так:
public Person() {
this(persons.size() + 1);
}