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