Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: mutable, immutable, thread safety, value object, side effect

Что такое мутабельные и иммутабельные типы в Java?

Проверяет знание различий между изменяемыми и неизменяемыми объектами на уровне языка.

Короткий ответ

Мутабельный (изменяемый) тип позволяет менять внутреннее состояние после создания (например, StringBuilder, ArrayList). Иммутабельный (неизменяемый) тип не позволяет — его состояние фиксируется при создании (например, String, Integer).

Длинный ответ

Иммутабельные типы

  • Определение: состояние объекта невозможно изменить после конструктора.

  • Примеры: String, Integer, LocalDate.

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

    • Безопасность в многопоточности — нет гонок состояний.

    • Простота кэширования и использования в качестве ключей коллекций.

  • Как создать свой:

    • Все поля private final.

    • Нет сеттеров, методы возвращают новый объект при «изменении».

    • Класс объявлен final или конструкторы защищают от наследования.

Мутабельные типы

  • Определение: содержат методы, меняющие состояние полей после создания.

  • Примеры: StringBuilder, коллекции List, Map.

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

    • Экономия на создании новых объектов при частых изменениях.

    • Более естественное API для наращивания данных (append, add).

  • Риски:

    • Требуют внешней синхронизации в многопоточном контексте.

    • Могут привести к неожиданным побочным эффектам при разделении ссылки на объект.

Выбор

  • Если объект представляет «значение» и используется как ключ или передаётся без копирования — предпочтительна иммутабельность.

  • Если объект часто модифицируется и его копирование дорого — используют мутабельные типы.

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    4

Навыки

  • Java

    Java

Ключевые слова

#mutable

#immutable

#thread safety

#value object

#side effect

Подпишись на Java Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.