Sobes.tech
Senior
47

Was muss mit der Klasse (mit den Feldern longId und List von Objekten) gemacht werden, damit ihre Objekte unveränderlich werden?

Unternehmen wurden gefragt
РТЛабс

Antwort von AI

sobes.tech KI

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

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

Пример:

import java.util.Collections;
import java.util.List;

public final class ImmutableClass {
    private final long longId;
    private final List<Object> objects;

    public ImmutableClass(long longId, List<Object> objects) {
        this.longId = longId;
        // Создаем неизменяемую копию списка
        this.objects = Collections.unmodifiableList(List.copyOf(objects));
    }

    public long getLongId() {
        return longId;
    }

    public List<Object> getObjects() {
        return objects;
    }
}

Таким образом, объекты класса будут неизменяемы после создания.