Встречается на собеседованиях • сегодня
Достаточно ли сделать класс final, поля private и не использовать сеттеры для обеспечения неизменяемости объекта после его создания
Нет, этого недостаточно. Для полной неизменяемости нужно:
1. Сделать все поля `final` (чтобы они инициализировались только в конструкторе)
2. Защитить от изменений mutable-поля (например, коллекции или массивы):
- Возвращать копии или неизменяемые обёртки
- Не хранить ссылки на внешние mutable-объекты
Пример:
```java
public final class ImmutablePerson {
private final String name;
private final List hobbies;
public ImmutablePerson(String name, List hobbies) {
this.name = name;
this.hobbies = Collections.unmodifiableList(new ArrayList<>(hobbies));
}
public List getHobbies() {
return hobbies; // безопасно, так как список неизменяемый
}
}
```

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы