加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

需要一些使用Java Generics的帮助

发布时间:2020-05-24 05:06:15 所属栏目:Java 来源:互联网
导读:我正在尝试建立一个系统来响应我的应用程序中发生的事件,类似于Observer模式.在我的系统中,EventProducers触发事件,EventConsumers响应这些事件,两者通过中央集线器连接:目前,我将忽略EventProducer并专注于EventHub和EventConsumer:interface EventConsume

我正在尝试建立一个系统来响应我的应用程序中发生的事件,类似于Observer模式.在我的系统中,EventProducers触发事件,EventConsumers响应这些事件,两者通过中央集线器连接:

目前,我将忽略EventProducer并专注于EventHub和EventConsumer:

interface EventConsumer

问题在于HashMap的声明:我希望能够做类似的事情

HashMap

因此EventConsumer的参数化类型与Class相同,但我能得到的最接近的是

HashMap

但是,这将允许诸如HashSet< EventConsumer< MouseClickEvent>>之类的内容.被分配给Class< KeyPressEvent>,假设KeyPressEvent和MouseClickEvent子类Event.

第二个问题在于subscribeToEvent:我需要能够将消费者存储在与其事件相对应的正确集合中,例如

subscriptions.get(E.class).put(consumer)

但我无法在运行时获得E级.

我该如何解决这些问题?我是以错误的方式来做这件事的吗?

最佳答案 您可以从EventConsumer类中删除泛型.但是你必须在EventConsumer的每个实现中强制转换Event对象.

interface EventConsumer {
    void respondToEvent(Event event);
}

class ClickEventConsumer implements EventConsumer {
   public void respondToEvent(Event event){
     ClickEvent ce = (ClickEvent)event;
     //...
   }
}

class EventHub {
  private HashMap

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读