У меня есть вопрос об Java-дженериках, на который, я надеялся, кто-нибудь может ответить. Рассмотрим следующий код:
public interface Event{}
public class AddressChanged implements Event{}
public class AddressDiscarded implements Event{}
public interface Handles<T extends Event>{
public void handle(T event);
}
Я хочу реализовать этот интерфейс Handles следующим образом:
public class AddressHandler implements Handles<AddressChanged>, Handles<AddressDiscarded>{
public void handle(AddressChanged e){}
public void handle(AddressDiscarded e){}
}
Но java не позволяет реализовывать Handles дважды, используя Generic. Мне удалось сделать это с C #, но я не могу найти обходной путь в Java без использования Reflection или instanceof и приведения.
Есть ли способ в java для реализации интерфейса Handles, используя оба общих интерфейса? Или, может быть, другой способ написания интерфейса Handles для достижения конечного результата?