Объясните для чего в классе объявляется переменная этого же класса?
public class Person {
static Person personInner;
String name, age;
private Person(String name, String age) {
this.name = name;
this.age = age;
}
public static Person getInstance(String name, String age){
if (personInner == null){
personInner = new Person(name, age);
}
return personInner;
}
public String getName() {
return name;
}
public String getAge() {
return age;
}
}
Хороший вопрос, логика данного кода
Это классический паттерн Сингелтон (или одиночка). Правда в данном случае это выглядит как ошибка. Так как это плохой дизайн, когда имя и возраст у getInstance просто игнорируются, получается пользователь API запрашивает определенный данные, а ему возвращается что-то не связанное с тем именем и возрастом, который он запросил. Получается что мы всегда работает с одним человеком, созданным первым. Можно было бы это понять если в getInstance менялись имя и возраст - это было бы переиспользование ненужного объекта (хотя такое тоже редко).
P.S. Так же странным решением выглядят не приватные внутренние поля, я бы сделал
private static Person personInner;
private String name;
private String age;
Ну или если ожидается что у класса будет созданы потомки, которые будут работать с этими полями, то использовал бы protected, видимость уровня класса кажется явно лишней.
А откуда код взят? Вы уверены, что он действительно делает то что и задумалось?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Опыты ставились над переменной int numberК двоичному виду приводил при помощи Integer
Пример обновления в инстаграме
Пусть у меня есть массив testКак мне сделать так, чтобы он сохранялся в sharedPreferences при выходе из программы и загружался при входе?