我正在制作一个系统,其中生产者模块生成事件,而消费者模块消耗这些事件。路由器类将每个生产者生成的事件发送到其消费者列表。事件有不同类型,因此 Producer 和 Consumer 类都通过通用的“EventType”进行参数化。
在我的路由器代码中,我有一个将生产者链接到消费者的 HashMap。我想表达这样的约束:给定生产者的每个消费者必须消费该生产者产生的相同的EventType(但是表中不同生产者的EventType可能不同)。
目前,在我的 Router 类中,我将 HashMap 声明为:
Map<Producer, List<Consumer>> src_to_consumers;
我想做一些类似的事情
Map<Producer<EventType>, List<Consumer<EventType>>> src_to_consumers;
除非没有约束,所有生产者/消费者集合对必须具有相同的 EventType。
有没有办法不用强制转换就可以做到这一点?
最佳答案
我认为将所有内容都存储在一张 map 中并不是一个好主意。我相信你有其他选择会更好。 map 在这里并不是万能的。如果我是你,我会完全设计一个 Activity 管理类,其中包含所需数量的成员。如果您可以在一张 map 中减少所有需求,那就继续吧!只要保持开放的想法,即您不限于单个对象,即使它模糊地看起来像您可以。
但是,已经有一些工具可以为您完成整个事件管理。它们被称为事件总线。它们有很多,搜索它们会给你带来很多结果,只需选择最适合你需要的一个即可。
关于java - 使用泛型在 Java 中编码类型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34511153/