RxAndroid: Как добавить дополнительные методы в Observer и Observable - PullRequest
0 голосов
/ 05 июля 2018

Наблюдатель имеет onNext (), OnError () и onComplete (). Есть ли способ добавить дополнительный метод?

Существует вероятность того, что объект, полученный через поток, имеет два типа вместо одного и того же типа. И обе возможности - это сценарий успеха. Они просто обрабатываются наблюдателем по-разному.

Теперь, с помощью обратных вызовов, можно добавить новый метод для обработки этого. Но не уверен, как это будет сделано с Rx. Или есть другой способ справиться с этим без добавления нового метода?

Спасибо

1 Ответ

0 голосов
/ 05 июля 2018

Я думаю, что лучший способ достичь этого - использовать общий суперкласс, который может содержать оба объекта.

В Kotlin вы можете сделать это с помощью sealed class в Java, сделайте это с помощью простого POJO. Недостатком является то, что вы должны использовать instanceOf и casting, чтобы использовать фактический тип.

public class Result<T> {
    public T result;

    public Result(T result) {
        this.result = result;
    }
}

public class Result1 extends Result<Object1> {

    public Result1(Object1 result) {
        super(result);
    }
}

public class Result2 extends Result<Object2> {

    public Result2(Object2 result) {
        super(result);
    }
}

Ваш Observable может испускать Result объектов, и вы можете привести к любому результату в зависимости от того, что вы получили по методу onNext.

...