Sobes.tech
Junior — Middle
70

Какие свойства характеризуют неизменяемый объект?

Answer from AI

sobes.tech AI

Неизменяемый объект (immutable object) обладает следующими свойствами:

  • Состояние не меняется после создания. Все поля объекта инициализируются при создании и не изменяются.
  • Отсутствие сеттеров или методов, изменяющих состояние. Все методы либо возвращают новые объекты с изменённым состоянием, либо не изменяют текущий.
  • Безопасность в многопоточном окружении. Поскольку состояние не меняется, объекты можно безопасно использовать из разных потоков без синхронизации.

В Java для создания неизменяемого объекта обычно:

  • Все поля объявляют как final.
  • Класс объявляют как final или не предоставляют методы для наследования.
  • Поля инициализируют через конструктор.
  • Не предоставляют сеттеры.

Пример:

public final class ImmutablePoint {
    private final int x;
    private final int y;

    public ImmutablePoint(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() { return x; }
    public int getY() { return y; }
}