RxAndroid:如何在Observer和Observable中添加其他方法

时间:2018-07-05 07:52:11

标签: rx-java2 rx-android

观察者具有onNext(),OnError()和onComplete()。 有没有办法添加其他方法?

通过流接收的对象可能是两种类型而不是同一类型。两种可能性都是成功的方案。观察者只是对它们进行了不同的处理。

现在,使用回调,可以添加一个新方法来处理此问题。 但不确定如何使用Rx完成此操作。 还是有另一种无需添加新方法即可处理此问题的方法?

谢谢

1 个答案:

答案 0 :(得分:0)

我认为实现此目标的最佳方法是使用可以容纳两个对象的通用超类。

在Kotlin中,您可以使用Java中的sealed class通过简单的POJO来实现。缺点是必须使用instanceOfcasting才能使用实际类型。

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方法中得到的结果强制转换为任一结果。