Сегодня у меня было Java интервью, и меня попросили создать неизменный класс с именем Person, и мне дали скелет с некоторыми параметрами: возраст, имя и т. Д. c. Я создал следующий класс:
final class Person {
private final int age;
private final String name;
private final List<String> petNames;
public Person(int a, String n, List<String> p) {
this.age = a;
this.name = n;
this.petNames = p;
}
int getAget() {
return this.age;
}
String getName() {
return this.name;
}
List<String> getPetnames() {
return this.petNames;
}
}
Мне сказали, что он неполон, потому что, выполнив приведенную ниже последовательность кода, вы докажете, что он не является неизменным:
int x = 3;
String name = "Alex";
List<String> ls = new ArrayList<>();
Person p1 = new Person(x, name, ls);
намек на то, что он связан со списком, и что я должен изменить sth в конструкторе. Но я действительно не знаю, почему, и я не понимаю, что не так.
Может кто-нибудь объяснить мне, что следует добавить и почему? Может быть, я не совсем понял неизменность.