【发布时间】:2015-12-29 12:33:23
【问题描述】:
我正在制作一个系统,其中生产者模块产生事件,而消费者模块消耗这些事件。路由器类将每个生产者生成的事件发送到其消费者列表。有不同类型的事件,因此 Producer 和 Consumer 类都由通用的“EventType”参数化。
在我的路由器代码中,我有一个将生产者链接到消费者的 HashMap。我想表达给定 Producer 的每个消费者必须使用该 Producer 生成的相同 EventType 的约束(但表中不同 Producer 的 EventType 可能不同)。
目前,在我的路由器类中,我将 HashMap 声明为:
Map<Producer, List<Consumer>> src_to_consumers;
我想做类似的事情
Map<Producer<EventType>, List<Consumer<EventType>>> src_to_consumers;
除了所有生产者/消费者-集合对必须具有相同的 EventType 的约束。
有没有办法在不强制转换的情况下做到这一点?
【问题讨论】:
-
您想将所有生产者和所有消费者存储在同一张地图中吗?
-
这不是必需的,但它似乎是一种合理的做事方式。当生产者触发一个事件时,它会将事件和它自己的 ID 发送给路由器,路由器查找它并将事件发送给消费者。地图似乎是一种合理的结构方式,但我对其他选择持开放态度。
-
这只是我的回答的一个问题,因为您的问题对此相当模糊。但是您提供了我想要的信息,我会发布答案。
-
我还应该注意,我必须能够动态切换路由方案(这是一个机器学习应用程序,有一个用于训练模式的连接方案和一个用于测试的连接方案),否则我会跳过路由器并将消费者直接绑定到生产者。
标签: java generics types casting