Встречается на собеседованиях • сегодня

Какие знаешь способы обеспечения иммутабельности классов

1. **Final класс и поля** – объяви класс и все его поля как `final`, чтобы предотвратить наследование и изменение полей после инициализации. ```java public final class ImmutablePerson { private final String name; private final int age; public ImmutablePerson(String name, int age) { this.name = name; this.age = age; } // Геттеры без сеттеров } ``` 2. **Защита от изменяемых объектов** – если класс содержит изменяемые поля (например, `List`), возвращай их копии или оберни в `Collections.unmodifiableList()`. ```java private final List hobbies; public List getHobbies() { return Collections.unmodifiableList(hobbies); } ``` 3. **Глубокая копия в конструкторе** – если объект принимает изменяемые параметры, создавай их копии. ```java public ImmutablePerson(List hobbies) { this.hobbies = new ArrayList<>(hobbies); } ``` 4. **Без сеттеров** – не предоставляй методов, изменяющих состояние объекта. 5. **Использование `record` (Java 16+)** – автоматически создает иммутабельный класс с `final` полями. ```java public record ImmutablePerson(String name, int age) {} ```
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы