Consideremos el siguiente ejemplo:¿No se puede incluir la misma interfaz con diferentes parámetros?
public class Sandbox {
public interface Listener<T extends JComponent> {
public void onEvent(T event);
}
public interface AnotherInterface extends Listener<JPanel>, Listener<JLabel> {
}
}
Esto se produce el siguiente error
/media/PQ-WDFILES/programming/Sandbox/src/Sandbox.java:20: Sandbox.Listener cannot be inherited with different arguments: <javax.swing.JPanel> and <javax.swing.JLabel>
public interface AnotherInterface extends Listener<JPanel>, Listener<JLabel> {
^
1 error
Por qué sin embargo? No hay superposición en los métodos generados. De hecho, eso significa esencialmente
public interface AnotherInterface {
public void onEvent(JPanel event);
public void onEvent(JLabel event);
}
No hay superposición allí. Entonces, ¿por qué está fallando?
En caso de que su preguntando lo que estoy haciendo y tener una mejor solución: Tengo un montón de eventos y una interfaz de escucha que es casi exactamente igual que la clase Listener
anteriormente. Estoy queriendo crear un adaptador y una interfaz de adaptador, y para eso necesito extender todas las interfaces de Listener con un evento específico. es posible? ¿Hay una mejor manera de hacer esto?
Ah, me olvidé de borrado de tipo. ¿Conoces una forma alternativa de lograr lo que quiero hacer? – TheLQ
@TheLQ, actualizado. –
@Stas Parece una tonelada de código por evento (~ 50). Tal vez debería volver a la creación explícita de oyentes por evento? – TheLQ