具有2个泛型参数的Java类

4

我正在尝试创建自己的线程安全事件处理,但是在下面的类声明行上遇到“E无法解析为类型”的错误。我该如何解决这个问题?

Observers.java

public final class Observers<T extends EventHandler<E>> {

    private CopyOnWriteArrayList<T> mListeners = new CopyOnWriteArrayList<T>();

    public interface EventHandler<E> {
       public void HandleEvent(Object sender, E e);
    }

    /*...*/

    public void dispatchEvent(Object sender, E args) {
        /*...*/
    }
}

EventHandler.java

public interface EventHandler<E extends EventArgs> {
 /* ... */
}
1个回答

12

你在Observers中只声明了一个类型参数。尝试使用以下代码:

你实际上

public final class Observers<E extends EventArgs, T extends EventHandler<E>> {

请注意,当您的Observers类实现外部接口时,该类声明自己的嵌套EventHandler接口看起来非常奇怪。如果您真的需要这两者,请建议您将它们重命名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接