Страницы

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

суббота, 30 ноября 2019 г.

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

#java #интерфейс


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


Ответы

Ответ 1



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

Ответ 2



Да, это возможно. Существует шаблон, который называется интерфейс-маркер. Классы реализуют интерфейс не содержащий, ни одного метода. Это требуется для того, чтобы отметить определенные классы, с которыми в дальнейшим возможны, какие-то определенные действия. Чтобы было понятнее, приведу пример. В стандартной библиотеке существует интерфейс java.lang.Cloneable. Он показывает, что переопределеный метод в классе java.lang.Object.clone() будет возвращать копию объекта данного класса.

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

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