DarthShader
Erfahrenes Mitglied
Hallo zusammen,
ich werde mal wieder wahnsinnig was Java Generics angeht - ich glaube irgendwas Entscheidendes fehlt mir, um die Dinger komplett zu verstehen (das war jetzt keine Einladung für Vorschläge
), obwohl ich schon etliche male über das Thema gelesen habe.
Ich habe hier ein einfaches Interface und eine einfache Klasse:
Dieser Code kompiliert nicht, an der Stelle (1) erscheint folgende Fehlermeldung:
Ich verstehe leider nicht, warum dieser Fehler auftritt. Ich hätte gedacht, dass ich im Interface klar mache, dass der Parameter für "dispatchEvent" vom Typ "EventObject oder irgendwas davon abgeleitet" ist ("T extends EventObject"). Aber es kommt trotzdem der Fehler, obwohl ich ihm bei (1) ein Parameter ("eventListener") vom Typ "EventListener" mitgebe.
Ich würde mich wirklich sehr freuen, wenn mir jemand erklären könnte, warum dieser Fehler auftritt bzw. was ich hier falsch mache.
Vielen Dank!
ich werde mal wieder wahnsinnig was Java Generics angeht - ich glaube irgendwas Entscheidendes fehlt mir, um die Dinger komplett zu verstehen (das war jetzt keine Einladung für Vorschläge

Ich habe hier ein einfaches Interface und eine einfache Klasse:
Java:
public interface EventDispatcher<T extends EventListener> {
public void dispatchEvent(T eventListener);
}
Java:
public class EventSupport {
private List<EventListener> eventListeners = new ArrayList<EventListener>();
public <T extends EventListener> void fireEvent(EventDispatcher<T> eventDispatcher) {
EventListener eventListener = eventListeners.get(0); // Nur hier fürs Beispiel immer der erste
eventDispatcher.dispatchEvent(eventListener); // Compiler-Fehler (1)
}
}
Dieser Code kompiliert nicht, an der Stelle (1) erscheint folgende Fehlermeldung:
Java:
// Compiler-Fehler (1)
The method dispatchEvent(T) in the type EventDispatcher<T> is not applicable
for the arguments (EventListener)
Ich verstehe leider nicht, warum dieser Fehler auftritt. Ich hätte gedacht, dass ich im Interface klar mache, dass der Parameter für "dispatchEvent" vom Typ "EventObject oder irgendwas davon abgeleitet" ist ("T extends EventObject"). Aber es kommt trotzdem der Fehler, obwohl ich ihm bei (1) ein Parameter ("eventListener") vom Typ "EventListener" mitgebe.
Ich würde mich wirklich sehr freuen, wenn mir jemand erklären könnte, warum dieser Fehler auftritt bzw. was ich hier falsch mache.
Vielen Dank!