【问题标题】:In OTTO are all instances of a parameterized class the "same"?在 OTTO 中,参数化类的所有实例都“相同”吗?
【发布时间】:2015-10-01 12:59:21
【问题描述】:

我以为我对another question 提出了一个很好的解决方案,但现在我认为它不会成功。

在 Otto 中,如果我这样做:

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

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

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

我怀疑会发生这种情况,因为在 Java 中实际上只有一个类 ApiRequestEvent,而 Otto 正在查看该类而忽略了类型参数。

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

【问题讨论】:

    标签: java otto


    【解决方案1】:

    没错。类型参数将被忽略。

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

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

    【讨论】:

    • 感谢您的回复...我最终只使用类型的实例,因为它们必须是唯一的。在某些情况下它们基本相同,我创建了一个子类并使用它来保持它们的唯一性
    猜你喜欢
    • 2016-08-22
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 2022-06-25
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多