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