具有2个通用参数的Java类

Can*_*ner 4 java

我正在尝试创建我自己的线程安全事件处理,但我E cannot be resolved to a type在下面的类decleration行上得到错误.我怎样才能解决这个问题?

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) {
        /*...*/
    }
}
Run Code Online (Sandbox Code Playgroud)

EventHandler.java

public interface EventHandler<E extends EventArgs> {
 /* ... */
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 12

实际上只是声明了一个类型参数Observers.试试这个:

public final class Observers<E extends EventArgs, T extends EventHandler<E>> {
Run Code Online (Sandbox Code Playgroud)

请注意,在实现外部接口时,您的类声明自己的嵌套接口看起来奇怪- 如果您确实需要这两个接口,我建议您重命名其中一个.ObserversEventHandler