Назад к вопросам
Senior
6
Что нужно сделать с классом (с полями longId и List объектов), чтобы его объекты стали иммутабельными?
Компании, где спрашивали
РТЛабс
Ответ от нейросети
sobes.tech AI
Чтобы сделать класс с полями longId и List объектов иммутабельным, нужно:
- Объявить класс как
final, чтобы предотвратить наследование и изменение поведения. - Сделать все поля
privateиfinal. - Не предоставлять сеттеры для полей.
- Для поля
Listиспользовать неизменяемую коллекцию или возвращать копию списка в геттерах, чтобы внешний код не мог изменить внутреннее состояние. - Инициализировать все поля через конструктор.
Пример:
import java.util.Collections;
import java.util.List;
public final class ImmutableClass {
private final long longId;
private final List<Object> objects;
public ImmutableClass(long longId, List<Object> objects) {
this.longId = longId;
// Создаем неизменяемую копию списка
this.objects = Collections.unmodifiableList(List.copyOf(objects));
}
public long getLongId() {
return longId;
}
public List<Object> getObjects() {
return objects;
}
}
Таким образом, объекты класса будут неизменяемы после создания.