Интерфейс маркера не имеет реализации.
Однако интерфейс маркера, как правило, влияет на поведение некоторых других классов.
Я нашел в googling, что интерфейс маркера предназначен для отправки некоторых инструкций JVM?
Это неверно.
Что он делает, это предоставление информации либо JVM, либо классам, предоставленным или запущенным на JVM. Информация НЕ представляет собой «инструкции». Скорее это ярлык на уровне класса.
Например, если вы объявляете класс как Serializable
, вы передаете информацию ObjectInputStream
и ObjectOutputStream
о том, что экземпляры этого класса могут быть сериализованы. Вы передаете эту информацию в виде самого класса; то есть ObjectInputStream
и ObjectOutputStream
могут использовать instanceof
(или эквивалент) для проверки возможности сериализации объекта.
Пожалуйста, помогите мне с примером реального мира.
Serializable и Cloneable являются известными примерами в библиотеках классов Java.
Существуют и другие интерфейсы, которые имеют «маркер-интерфейс». Например, Closeable
и Autocloseable
оба имеют один метод close()
, который делает то же самое. Разница в том, что AutoCloseable
рассматривается как маркер с помощью инструкции «попробуйте с ресурсами».
И, наконец, ничего не стоит того, что интерфейсы маркеров не одобряются пуристами дизайна OO. Вы можете достичь той же цели, используя аннотации Java.
Посмотрите на это «[* Маркерные интерфейсы в Java *] (http://stackoverflow.com/q/9858708/1364007)». –