Sobes.tech
Назад к вопросам
Junior — Middle
65

Какие способы обеспечить невозможность изменения объекта после его инициализации?

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

sobes.tech AI

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

  • Объявить класс как final, чтобы нельзя было его наследовать и переопределять поведение.
  • Сделать все поля private final, чтобы их нельзя было изменить после присвоения.
  • Инициализировать все поля через конструктор.
  • Не предоставлять сеттеры (методы для изменения полей).
  • Если поля — это изменяемые объекты (например, коллекции), возвращать их копии или использовать неизменяемые обертки (например, Collections.unmodifiableList).

Пример:

public final class ImmutablePerson {
    private final String name;
    private final int age;

    public ImmutablePerson(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

Если есть коллекции:

private final List<String> items;

public ImmutableClass(List<String> items) {
    this.items = Collections.unmodifiableList(new ArrayList<>(items));
}

public List<String> getItems() {
    return items;
}

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