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