Подтвердить что ты не робот

Если интерфейс Marker не имеет каких-либо методов, как он работает?

Я знаю, что такое интерфейс маркера и когда нам нужно его использовать. Один вопрос до сих пор не ясен для меня. Если интерфейс маркера не имеет какого-либо метода или тела, как он работает во время выполнения?

4b9b3361

Ответ 1

Интерфейс маркера не работает как таковой. Как следует из названия, он просто обозначает класс как определенный тип. Некоторый другой код должен проверить наличие маркера и сделать что-то на основе этой информации.

В наши дни аннотации часто выполняют ту же роль, что и ранее выполнялись интерфейсами маркеров.

Ответ 2

Единственная полезная вещь, которую вы можете сделать с ней:

if (instance instanceof MyMarkerInterface) {
   ...
}

Ответ 3

Интерфейсы маркеров могут быть заменены аннотациями во многих местах, однако интерфейсы маркеров все еще можно использовать для

  • Проверка времени компиляции. У вас может быть метод, который должен принимать объект класса с определенным интерфейсом (ами) маркера, например.

    public void myMethod(MyMarkerInterface MMI);
    

Вы не можете выполнить эту проверку времени компиляции, используя только аннотацию.

BTW: у вас могут быть два интерфейса с использованием дженериков, но хорошие примеры встречаются редко.

  • Структуры поддержки, которые зависят от интерфейса (ов) для идентификации типа компонента. как OSGi.

EDIT: Я использую это для интерфейса маркера Listener. У слушателя есть методы, отмеченные аннотациями, но методы могут иметь любое имя или тип. Он добавляет проверку времени компилятора к тому, что в противном случае было бы чисто связыванием времени выполнения.

public Component implements Listener {

@ListenerCallback
public void onEventOne(EventOne... eventOneBatch) { }

@ListenerCallback
public void onEventTwo(EventTwo eventTwo) { }
}

Ответ 4

Маркерный интерфейс в Java - это интерфейсы без поля или методов или в простом слое, пустой интерфейс в java называется интерфейсом маркера. например сериализуемый, Clonnable и Remote Interface. Они используются для указания сигнала или команды на компилятор или JVM. Его также можно использовать для классификации кода. Вы также можете написать свой собственный интерфейс маркера и использовать их для логического разделения кода. Кроме того, вы можете написать любую операцию предварительной обработки для этого класса.

Ответ 5

Интерфейс маркера сообщает JVM, что класс, помеченный интерфейсом маркера, добавляет функциональность интерфейса маркера. Подобно реализации Cloneable, JVM указывает, что этот класс реализует Cloneable, и поэтому JVM придется скопировать его по-бит.