具有2个通用参数的Java类

时间:2011-10-11 13:49:20

标签: java

我正在尝试创建我自己的线程安全事件处理但是我在下面的类decleration行上出现E cannot be resolved to a type错误。我该如何解决这个问题?

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 个答案:

答案 0 :(得分:12)

您只有实际Observers中声明了一个类型参数。试试这个:

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

请注意,Observers类在实现外部接口时声明其自己的嵌套EventHandler接口看起来高度奇怪 - 如果你真的需要这两个,我建议你重命名其中一个。