Почему используют финальный класс вместо класса для реализации кэша?

final запрещает наследование от класса и переопределение его поведения. Для кеша это помогает сохранить инварианты, но не делает доступ потокобезопасным.

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

Что ответить на собеседовании

final запрещает наследование от класса и переопределение его поведения. Для кеша это помогает сохранить инварианты, но не делает доступ потокобезопасным.

Подробный разбор

Ответ с пояснениями

final запрещает наследование от класса и переопределение его поведения. Для кеша это помогает сохранить инварианты, но не делает доступ потокобезопасным.

Если расширение через подклассы не является частью контракта, final показывает это намерение и уменьшает число способов случайно нарушить TTL, вытеснение или синхронизацию. Подмену в тестах можно делать через CacheProtocol, не наследуясь от реализации.

Компилятор в некоторых случаях лучше оптимизирует вызовы, но обещать измеримый выигрыш без профилирования не стоит. Для конкурентного кеша всё равно нужны actor, lock или другая изоляция; final относится к наследованию, а не к согласованности памяти.

Источник: raw.githubusercontent.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее