Я получаю ошибку ниже:Почему этот метод вызывает отказ? (Обобщения и групповые символы)
'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. Я нахожу сообщение об ошибке запутанным, так как похоже, что он должен работать (объявление метода ожидает монитор или подкласс, я передаю в подкласс). Любая помощь (+ объяснение) будет принята с благодарностью!
Спасибо!
Благодарим за подробный ответ. Я думал, что может быть менее сложное решение, но это имеет смысл! – RNGuy