У меня есть вопрос Java generics, на который я надеялся, что кто-то сможет ответить. Рассмотрим следующий код:
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 не позволяет дважды вводить дескрипторы с помощью Generic. Я смог выполнить это с помощью С#, но не могу определить обходной путь в java без использования Reflection или instanceof и casting.
Есть ли способ в Java реализовать интерфейс Handles, используя оба общих интерфейса? Или, возможно, еще один способ написать интерфейс Handles, чтобы конечный результат мог быть достигнут?