Использование универсального события с шиной событий Otto

Я использую шину событий Otto для подписки на Volley Requests. Я хочу использовать этот общий класс, но неправильный фрагмент (подписчик) пытается обработать событие. Можно ли использовать универсальный класс или случайным образом вызывается каждый подписчик VolleyResultEvent, независимо от универсального типа?

public class VolleyResultEvent<T> {

    public final VolleyResult result;
    public final T content;

    public VolleyResultEvent(VolleyResult result, T content) {
        this.result = result;
        this.content = content;
    }

    public enum VolleyResult {
        SUCCESS, ERROR
    }

}

person Sven Mäurer    schedule 22.06.2014    source источник


Ответы (1)


Каждый подписчик VolleyResultEvent будет вызываться независимо от дженериков типа. Либо вы хотите создать несколько подклассов VolleyResultEvent в соответствии с количеством типов, которые у вас есть; или реализовать функцию сопоставления, которая, например, будет сравнивать идентификатор (или тип) события с идентификатором (или типом) подписчика и разрешать дальнейшую обработку, если они равны.

person Alexey Dmitriev    schedule 26.06.2014
comment
кстати это так? разные дженерики на самом деле должны быть разного типа, не так ли? - person benchuk; 17.09.2014
comment
Это результат стирания типов в Java:/ См.: docs.oracle .com/javase/tutorial/java/generics/erasure.html - person Christian Brüggemann; 02.03.2015