Open
Description
Hi bennidi, first of all, thanks for all your hard work on the project.
I'm using MBassador 1.2 and I have a question regarding passing generic messages.
Suppose I have a class that supports generics
public class GenericEvent<T> {
Class<T> mClass;
public GenericEvent(Class<T> clazz) {
mClass = clazz;
}
@Override
public String toString() {
return mClass.getCanonicalName();
}
}
When I publish a GenericEvent, I notice that all handlers for GenericEvent gets called. For example, the following code:
private void busTest() {
Bus.publish(new GenericEvent<List>(List.class));
Bus.publish(new GenericEvent<ArrayList>(ArrayList.class));
}
@Handler
public void onGenEvent(GenericEvent e) {
Leg.a("" + e);
}
@Handler
public void onGenEventQuestion(GenericEvent<?> e) {
Leg.a("" + e);
}
@Handler
public void onGenEventList(GenericEvent<List> e) {
Leg.a("" + e);
}
@Handler
public void onGenEventMap(GenericEvent<Map> e) {
Leg.a("" + e);
}
@Handler
public void onGenEventArrayList(GenericEvent<ArrayList> e) {
Leg.a("" + e);
}
@Handler
public void onGenEventHashMap(GenericEvent<HashMap> e) {
Leg.a("" + e);
}
produces the following output:
10-10 22:25:28.384 1890-1890/com.sdchang.testbed A/BaseActivity#73 (onGenEventArrayList)﹕ java.util.List
10-10 22:25:28.384 1890-1890/com.sdchang.testbed A/BaseActivity#53 (onGenEvent)﹕ java.util.List
10-10 22:25:28.384 1890-1890/com.sdchang.testbed A/BaseActivity#78 (onGenEventHashMap)﹕ java.util.List
10-10 22:25:28.392 1890-1890/com.sdchang.testbed A/BaseActivity#63 (onGenEventList)﹕ java.util.List
10-10 22:25:28.392 1890-1890/com.sdchang.testbed A/BaseActivity#58 (onGenEventQuestion)﹕ java.util.List
10-10 22:25:28.392 1890-1890/com.sdchang.testbed A/BaseActivity#68 (onGenEventMap)﹕ java.util.List
10-10 22:25:28.396 1890-1890/com.sdchang.testbed A/BaseActivity#73 (onGenEventArrayList)﹕ java.util.ArrayList
10-10 22:25:28.396 1890-1890/com.sdchang.testbed A/BaseActivity#53 (onGenEvent)﹕ java.util.ArrayList
10-10 22:25:28.396 1890-1890/com.sdchang.testbed A/BaseActivity#78 (onGenEventHashMap)﹕ java.util.ArrayList
10-10 22:25:28.396 1890-1890/com.sdchang.testbed A/BaseActivity#63 (onGenEventList)﹕ java.util.ArrayList
10-10 22:25:28.396 1890-1890/com.sdchang.testbed A/BaseActivity#58 (onGenEventQuestion)﹕ java.util.ArrayList
10-10 22:25:28.400 1890-1890/com.sdchang.testbed A/BaseActivity#68 (onGenEventMap)﹕ java.util.ArrayList
Is this expected?
I hope that only handlers with classes that are compatible with the message are called.
Thank you.