Интерфейсы маркеров можно заменить аннотациями во многих местах, однако интерфейсы маркеров все еще можно использовать для
Проверка времени компиляции. У вас может быть метод, который должен принимать объект класса с заданным интерфейсом (ами) маркера, например
public void myMethod(MyMarkerInterface MMI);
Вы не можете иметь эту проверку времени компиляции, используя только аннотацию.
Кстати: вы можете использовать два интерфейса, используя дженерики, но хорошие примеры встречаются редко.
- Поддержка структур, которые зависят от интерфейса (ов) для определения типа компонента. как OSGi.
РЕДАКТИРОВАТЬ: я использую это для интерфейса маркера слушателя. У слушателя есть методы методов, помеченные аннотациями, но методы могут иметь любое имя или тип. Он добавляет проверку времени компиляции к тому, что иначе было бы чисто связыванием во время выполнения.
public Component implements Listener {
@ListenerCallback
public void onEventOne(EventOne... eventOneBatch) { }
@ListenerCallback
public void onEventTwo(EventTwo eventTwo) { }
}