Sobes.tech
Назад к вопросам
Senior
6

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

Компании, где спрашивали
РТЛабс

Ответ от нейросети

sobes.tech AI

Чтобы сделать класс с полями 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;
    }
}

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