我认为我对another question提出了一个很好的解决方案,但是现在我觉得它不会有效。
在奥托,如果我做这样的事情:
@Subscribe public void foo(ApiRequestEvent<Foo> event) {
}
@Subscribe public void bar(ApiRequestEvent<Bar> even) {
}
如果我将ApiRequestEvent<>
的任何实例发布到总线上,似乎会调用这两种方法。这是预期的吗?
我怀疑发生这种情况是因为在Java中只有一个类ApiRequestEvent
,而Otto在忽略类型参数的同时查看该类。
在我放弃这种方法之前,还有这个吗?我打算使用这个参数化类作为我想订阅的事件的“签名”。
答案 0 :(得分:1)
这是正确的。类型参数将被忽略。
我的典型方法是为所有事件类型定义一个枚举,订阅者方法可以检查它以过滤掉他们感兴趣的事件。
不幸的是,因为枚举所有事件类型会很麻烦,所以这当然不能很好地扩展。