Tengo una pregunta sobre genéricos de Java que esperaba que alguien pudiera responder. Considere el siguiente código:Implementación de interfaz genérica en 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);
}
que desea implementar esta interfaz Maneja así:
public class AddressHandler implements Handles<AddressChanged>, Handles<AddressDiscarded>{
public void handle(AddressChanged e){}
public void handle(AddressDiscarded e){}
}
Pero Java no permite la implementación de manijas dos veces utilizando el genérico. Pude lograr esto con C#, pero no puedo encontrar una solución alternativa en Java sin usar Reflection o instanceof y casting.
¿Existe alguna manera en Java de implementar la interfaz de Handles utilizando ambas interfaces genéricas? ¿O tal vez otra forma de escribir la interfaz de Handles para que el resultado final pueda lograrse?
Esto es discutible ... Esta "cascada instanceof" es un procedimiento muy paragidm. Por supuesto que funciona, pero en mi humilde opinión no es muy buen estilo. Pero por lo tanto, tener diferentes nombres de métodos puede no ser perfecto tampoco, es probablemente una cuestión de gusto. –
Esto es lo que haría. No es necesario :) –
-1: puede implementar múltiples interfaces en Java. –