Junior
54
questionbank

Что такое неизменяемые объекты (immutable)?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Объекты, состояние которых не может быть изменено после создания. При попытке модификации всегда создается новый объект.

Примеры неизменяемых классов в Java:

  • String
  • Примитивные обертки (Integer, Long, Boolean и т.д.)
  • Некоторые коллекции (Collections.unmodifiableList(), ImmutableList из Guava)

Преимущества:

  • Потокобезопасность (не требуют синхронизации при совместном доступе).
  • Простота в использовании (легко понять состояние объекта).
  • Могут использоваться как ключи в HashMap или элементы Set (их хеш-код и equals() не меняются).
  • Улучшают производительность за счет возможности кэширования и повторного использования.

Недостатки:

  • Создание нового объекта при каждой модификации может быть неэффективным для частых изменений.

Создание своих:

  • Объявить класс final.
  • Объявить все поля приватными и final.
  • Не предоставлять методов-сеттеров.
  • В геттерах для мутабельных полей возвращать копии, а не ссылки на оригинальные объекты.
java