Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

Интерфейс, не содержащий ни одного члена

Возможен ли интерфейс, не содержащий ни одного члена, и если да, какой практический смысл от такого интерфейса?


Ответ

Да, возможен. Такие интерфейсы называют маркерными. Они нужны для индикации чего-либо JVM, компилятору или какой-либо библиотеке. Пустые они потому, что позволяют добавить некоторый признак/маркер/индикацию к типам, не меняя контракты этих типов.
В Джаве такими интерфейсами являются, например, Serializable и Cloneable. Существование Serializable позволяет сделать проверку "можно ли сериализовать этот объект" более типизированным образом, сведя ее к проверке "имплементирует ли этот объект интерфейс Serializable".
Заменой маркерным интерфейсам также могут служить аннотации (например, @ThreadSafe).
Интерфейс-маркер на Википедии.

Комментариев нет:

Отправить комментарий