Betrachten Sie das folgende Beispiel:Kann dieselbe Schnittstelle nicht mit anderen Parametern verbunden sein?
public class Sandbox {
public interface Listener<T extends JComponent> {
public void onEvent(T event);
}
public interface AnotherInterface extends Listener<JPanel>, Listener<JLabel> {
}
}
Dies schlägt mit dem folgenden Fehler
/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
Warum aber? Es gibt keine Überlappung in den generierten Methoden. In der Tat bedeutet das im Wesentlichen
Keine Überlappung dort. Warum scheitert es?
Wenn Ihr fragen, was ich tue und eine bessere Lösung haben: Ich habe eine Reihe von Veranstaltungen und eine Listener-Schnittstelle, die wie die Listener
Klasse über fast genau ist. Ich möchte einen Adapter und eine Adapterschnittstelle erstellen, und dazu muss ich alle Listener-Schnittstellen um ein bestimmtes Ereignis erweitern. Ist das möglich? Gibt es einen besseren Weg, dies zu tun?
Ah, ich habe vergessen, Art zu löschen. Kennen Sie einen alternativen Weg, um das zu erreichen, was ich tun möchte? – TheLQ
@TheLQ, aktualisiert. –
@Stas Das scheint wie eine Tonne Code pro Ereignis (~ 50). Vielleicht sollte ich einfach zum expliziten Erstellen eines Listeners pro Ereignis zurückkehren? – TheLQ