Проверяет знание принципов создания неизменяемых (immutable) объектов.
Поля — final + приватные.
Нет сеттеров.
Запрет наследования (класс — final).
Защита от изменений mutable-полей (глубокое копирование).
Пример иммутабельного класса:
public final class ImmutablePerson {
private final String name;
private final List<String> hobbies;
public ImmutablePerson(String name, List<String> hobbies) {
this.name = name;
this.hobbies = new ArrayList<>(hobbies); // Защитная копия!
}
public List<String> getHobbies() {
return new ArrayList<>(hobbies); // Возвращаем копию!
}
}Почему так:
final-поля нельзя изменить после создания.
Защитная копия списка hobbies предотвращает его модификацию извне.