Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: immutable, final, defensive copy

Как сделать класс иммутабельным?

Проверяет знание принципов создания неизменяемых (immutable) объектов.

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

  1. Поля — final + приватные.

  2. Нет сеттеров.

  3. Запрет наследования (класс — final).

  4. Защита от изменений mutable-полей (глубокое копирование).

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

Пример иммутабельного класса:

public final class ImmutablePerson {
    private final String name;
    private final List<String> hobbies;

    public ImmutablePerson(String name, List<String> hobbies) {
        this.name = name;
        this.hobbies = new ArrayList<>(hobbies); // Защитная копия!
    }

    public List<String> getHobbies() {
        return new ArrayList<>(hobbies); // Возвращаем копию!
    }
}

Почему так:

  • final-поля нельзя изменить после создания.

  • Защитная копия списка hobbies предотвращает его модификацию извне.

Уровень

  • Рейтинг:

    1

  • Сложность:

    6

Навыки

  • Java

    Java

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

#immutable

#final

#defensive copy

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