Почему в некоторых интерфейсах не определяют методов?

Такие интерфейсы называются маркерными (marker interfaces). Они не содержат методов, а служат для аннотирования классов, указывая компилятору или JVM на определенные свойства или семантику класса.

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

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

Такие интерфейсы называются маркерными (marker interfaces). Они не содержат методов, а служат для аннотирования классов, указывая компилятору или JVM на определенные свойства или семантику класса.

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

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

Такие интерфейсы называются маркерными (marker interfaces). Они не содержат методов, а служат для аннотирования классов, указывая компилятору или JVM на определенные свойства или семантику класса.

Примеры:

  • java.io.Serializable: Помечает класс как сериализуемый.
  • java.lang.Cloneable: Указывает на возможность клонирования объекта.
  • java.util.RandomAccess: Оптимизирует произвольный доступ к элементам списка.

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

  • Семантика: Явно обозначают намерение разработчика относительно класса.
  • Полиморфизм: Позволяют использовать полиморфные вызовы, работая с группой классов, реализующих один маркерный интерфейс.
  • Аннотирование: Могут использоваться для предоставления дополнительной информации инструментам (например, фреймворкам, ORM).

Альтернативы (в зависимости от контекста):

  • Аннотации (@interface).
  • Абстрактные классы.

Маркерные интерфейсы предпочтительны, когда нужно обозначить атрибут класса без добавления поведения.

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

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

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

Подробнее