我收到以下错误:为什么此方法调用失败? (泛型和通配符)
'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);
}
}
我会毫不犹豫地承认我对泛型很陌生,对Java本身来说还很新颖。我发现错误消息很混乱,因为它看起来应该起作用(方法声明需要一个Monitor或子类,我正在传递一个子类)。任何帮助(+解释)将不胜感激!
谢谢!
感谢您的详细回复。我认为可能有一个不太详细的解决方案,但这是有道理的! – RNGuy