当X延伸Y时,X不适用于参数Y. [英] X is not applicable for the arguments Y, when X extends Y
本文介绍了当X延伸Y时,X不适用于参数Y.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
EventHandler.java:
public abstract class EventHandler<E> {
public abstract void HandleEvent(Object sender, E e);
}
Foo.java:
private OnProgressEventHandler m_OnProgressEventHandler = new OnProgressEventHandler();
private class OnProgressEventHandler extends EventHandler<ProgressEventArgs> {
public void HandleEvent(Object sender, ProgressEventArgs args) {
/*...*/
}
}
ProgressEventArgs.java:
public class ProgressEventArgs extends EventArgs {
/*...*/
}
Bar.java:
public void addProgressEventListener(EventHandler<EventArgs> listener) {
m_OnProgress.addListener(listener);
}
此行:
myBarObject.addProgressEventListener(m_OnProgressEventHandler);
原因:
类型Bar中的方法addProgressEventListener(EventHandler)不适用于参数(Foo.OnProgressEventHandler)
The method addProgressEventListener(EventHandler) in the type Bar is not applicable for the arguments (Foo.OnProgressEventHandler)
我不明白为什么它不能编译,因为 OnProgressEventHandler
extends EventHandler< ProgressEventArgs>
。我确定这是我遗漏的一些微不足道的东西,但我无法理解为什么。
I don't understand why it doesn't compile because OnProgressEventHandler
extends EventHandler<ProgressEventArgs>
. I'm sure it's something trivial I missing, but I cant figure why.
推荐答案
更改
public void addProgressEventListener(EventHandler<EventArgs> listener) {
m_OnProgress.addListener(listener);
}
到
public void addProgressEventListener(EventHandler<? extends EventArgs> listener) {
m_OnProgress.addListener(listener);
}
这篇关于当X延伸Y时,X不适用于参数Y.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文