Назад к вопросам
Aston
Junior — Middle
63
Каким образом можно обеспечить неизменяемость объекта класса, содержащего список в качестве поля?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Чтобы обеспечить неизменяемость объекта класса с полем-списком в Java, нужно:
- Сделать класс
finalили не предоставлять методы, изменяющие состояние. - Сделать поле списка
private final. - При инициализации копировать переданный список (например, через
new ArrayList<>(list)), чтобы избежать внешних изменений. - Возвращать из геттеров либо копию списка, либо использовать
Collections.unmodifiableList()для предоставления только для чтения.
Пример:
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
public final class ImmutableClass {
private final List<String> items;
public ImmutableClass(List<String> items) {
this.items = Collections.unmodifiableList(new ArrayList<>(items));
}
public List<String> getItems() {
return items; // нельзя изменить, т.к. unmodifiableList
}
}
Таким образом, внутренний список нельзя изменить извне, и объект остается неизменяемым.