Ich erhalte die folgenden Fehler:Warum schlägt dieser Methodenaufruf fehl? (Generics & Wildcards)
'call(ContainsMonitor)' cannot invoke 'call(? extends webscout.Monitor)' in 'WebScoutCallable'
Monitor.java
WebScoutCallable<? extends Monitor> handler;
public setCallable(WebScoutCallable<? extends Monitor> callable) {
this.handler = callable;
}
WebScoutCallable.java
public interface WebScoutCallable<T extends Monitor> {
public void call(T caller);
}
ContainsMonitor.java
public class ContainsMonitor extends Monitor {
public void handleDocument() {
handler.call(this);
}
}
Ich gebe frei zu, dass ich neu in Generika bin und immer noch ziemlich neu in Java bin. Ich finde die Fehlermeldung verwirrend, wie es aussieht, sollte es funktionieren (Methodendeklaration erwartet einen Monitor oder eine Unterklasse, ich übergebe in einer Unterklasse). Jede Hilfe (+ Erklärung) würde sehr geschätzt werden!
Danke!
Vielen Dank für die ausführliche Antwort. Ich dachte, es könnte eine weniger ausführliche Lösung geben, aber das macht Sinn! – RNGuy