Sobes.tech
Junior — Middle
112

Wie implementiert man die Unveränderlichkeit eines Benutzerobjekts, das Eigenschaften und eine Sammlung verschachtelter Objekte enthält?

Unternehmen wurden gefragt
СБЕР КорпусСБЕР Корпус

Antwort von AI

sobes.tech KI

Чтобы сделать объект пользователя в Java неизменяемым, нужно:

  1. Объявить класс как final или не предоставлять методы для наследования.
  2. Сделать все поля private final.
  3. Не предоставлять сеттеры.
  4. Для коллекций и вложенных объектов использовать неизменяемые структуры или создавать глубокие копии при передаче в конструктор и при возврате из геттеров.

Пример:

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.