有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当X扩展Y时,javax不适用于参数Y

事件处理程序。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 {
    /*...*/
}

条。java:

public void addProgressEventListener(EventHandler<EventArgs> listener) {
    m_OnProgress.addListener(listener);
}

这一行:

myBarObject.addProgressEventListener(m_OnProgressEventHandler); 

原因:

The method addProgressEventListener(EventHandler) in the type Bar is not applicable for the arguments (Foo.OnProgressEventHandler)

我不明白它为什么不编译,因为OnProgressEventHandler扩展了EventHandler<ProgressEventArgs>。我肯定我遗漏了一些琐碎的东西,但我不明白为什么


共 (1) 个答案

  1. # 1 楼答案

    改变

    public void addProgressEventListener(EventHandler<EventArgs> listener) {
        m_OnProgress.addListener(listener);
    }
    

    public void addProgressEventListener(EventHandler<? extends EventArgs> listener) {
        m_OnProgress.addListener(listener);
    }