Junior — Middle
128
Comment créer une classe dont les objets ne peuvent pas être modifiés après l'initialisation, tout en ayant une collection comme l'un de ses composants?
Entreprises à qui on a demandé
Réponse de l'IA
sobes.tech IA
Чтобы создать в 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; // возвращаем неизменяемый список
}
}
Таким образом, после создания объекта изменить его коллекцию нельзя.