В Java есть такой концепт как "маркерный интерфейс" (marker interface). Это интерфейс, который не имеет методов. Его основное предназначение - помечать классы, чтобы это имело какой-то эффект на уровне компиляции или рантайма. Например, маркерный интерфейс java.io.Serializable не определяет методов, он просто указывает компилятору и JVM, что класс, который его реализует, может быть сериализован (т.е. его объекты могут быть преобразованы в поток байтов и обратно), и нужно выполнить некоторые действия в рантайме, чтобы это было возможно. Это может быть полезным для некоторых шаблонов проектирования, например, паттерн "Наблюдатель" может использовать маркерный интерфейс для определения, что классы подписчиков могут быть уведомлены об изменениях в издателе. В целом, использование маркерных интерфейсов - это выбор дизайнера API, и они не обязательны для всех случаев. Маркерный интерфейс может быть полезен, если вам нужно указать наличие некоторого свойства или функции у класса или объекта
Java 1170. Почему в некоторых интерфейсах вообще не определяют методов?
11 сентября 202311 сен 2023
13
~1 мин