具有2个通用参数的Java类 [英] Java class with 2 generic parameters

查看:430
本文介绍了具有2个通用参数的Java类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to crate my own thread safe event handling but I get E cannot be resolved to a type error on class decleration line below. How can I fix this?

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> {
 /* ... */
}


推荐答案

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

You've only actually declared a single type parameter in Observers. Try this:

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

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

Note that it looks highly odd for your Observers class to declare its own nested EventHandler interface while implementing the outer one - if you really need both of those, I would suggest you rename one of them.

这篇关于具有2个通用参数的Java类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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