当X延伸Y时,X不适用于参数Y. [英] X is not applicable for the arguments Y, when X extends Y

查看:124
本文介绍了当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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆