Junior — Middle
124
Hoe implementeer je de onveranderlijkheid van een gebruikersobject dat eigenschappen en een collectie geneste objecten bevat?
Bedrijven waar gevraagd werd
Antwoord van AI
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.