Назад к вопросам
СБЕР Корпус
Junior — Middle
70
Каким образом реализовать неизменяемость объекта пользователя, который содержит свойства и коллекцию вложенных объектов?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Чтобы сделать объект пользователя в Java неизменяемым, нужно:
- Объявить класс как
finalили не предоставлять методы для наследования. - Сделать все поля
private final. - Не предоставлять сеттеры.
- Для коллекций и вложенных объектов использовать неизменяемые структуры или создавать глубокие копии при передаче в конструктор и при возврате из геттеров.
Пример:
import java.util.Collections;
import java.util.List;
public final class User {
private final String name;
private final List<Address> addresses;
public User(String name, List<Address> addresses) {
this.name = name;
// Создаем неизменяемую копию списка
this.addresses = Collections.unmodifiableList(
List.copyOf(addresses));
}
public String getName() {
return name;
}
public List<Address> getAddresses() {
return addresses;
}
}
final class Address {
private final String city;
public Address(String city) {
this.city = city;
}
public String getCity() {
return city;
}
}
Таким образом, ни поля, ни вложенные объекты не могут быть изменены после создания объекта User.