2014-05-10 43 views
2

我以爲我有一個很好的解決方案another question我問,但現在我不認爲它會奏效。在OTTO中,參數化類的所有實例都是「相同的」嗎?

在奧托,如果我做這樣的事情:

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

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

好像這兩種方法被稱爲如果我發佈的ApiRequestEvent<>任何實例到總線上。這是什麼預期?

我懷疑發生這種情況是因爲在Java中只有一個類ApiRequestEvent,而Otto正在查看類而忽略了類型參數。

在我放棄這種方法之前,究竟有沒有這個方法呢?我打算使用這個參數化類作爲我想要訂閱的事件的「簽名」。

回答

1

這是正確的。類型參數將被忽略。

我的典型方法是定義枚舉所有的事件類型,訂戶方法可以檢查過濾出自己感興趣的活動。

不幸的是,因爲它可以很麻煩枚舉所有的事件類型,這當然不能很好地擴展。

+0

感謝您的回覆......我最終只使用了這些類型的實例,因爲無論如何它們必須是唯一的。在某些情況下,它們基本上是相同的,我創建了一個子類並使用它來保持它們的獨特性 – nPn

相關問題