Объясните для чего в классе объявляется переменная этого же класса?
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, видимость уровня класса кажется явно лишней.
А откуда код взят? Вы уверены, что он действительно делает то что и задумалось?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости