在OTTO中,参数化类的所有实例都是"相同"?

时间:2014-05-10 14:49:14

标签: java otto

我认为我对another question提出了一个很好的解决方案,但是现在我觉得它不会有效。

在奥托,如果我做这样的事情:

@Subscribe public void foo(ApiRequestEvent<Foo> event) {
}

@Subscribe public void bar(ApiRequestEvent<Bar> even) {
}

如果我将ApiRequestEvent<>的任何实例发布到总线上,似乎会调用这两种方法。这是预期的吗?

我怀疑发生这种情况是因为在Java中只有一个类ApiRequestEvent,而Otto在忽略类型参数的同时查看该类。

在我放弃这种方法之前,还有这个吗?我打算使用这个参数化类作为我想订阅的事件的“签名”。

1 个答案:

答案 0 :(得分:1)

这是正确的。类型参数将被忽略。

我的典型方法是为所有事件类型定义一个枚举,订阅者方法可以检查它以过滤掉他们感兴趣的事件。

不幸的是,因为枚举所有事件类型会很麻烦,所以这当然不能很好地扩展。