Можно ли использовать аннотацию маркера для перечисления при разработке универсального интерфейса?
Или, возможно ли ввести контрольные ссылки на аннотации во время компиляции?
Я разрабатываю набор интерфейсов для обработки сообщений, каждое сообщение будет состоять из типа сообщения и содержимого сообщения.
Я хотел бы закодировать типы сообщений как перечисления, а затем определить другие интерфейсы на основе этого. Как то так,
public interface MessageHandler<E extends Enum<E>> {
boolean handles( E messageType );
}
Я не хочу, чтобы здесь использовался какой-либо enum, я могу добавить Marker Interface MessageType
примерно так,
public interface MessageHandler<E extends Enum<E> & MessageType> {
boolean handles( E messageType );
}
Я понимаю, что аннотации маркеров предпочтительнее интерфейсов маркеров в наши дни, но я не вижу возможности использовать их здесь. Это возможно или я просто придерживаюсь интерфейса?