Встречается на собеседованиях • сегодня
Какие знаешь способы обеспечения иммутабельности классов
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) {}
```

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