RxJava - 如何使用 Flowable 引用的类型的方法?

RxJava - how to use methods from type referenced by Flowable?

我有两个 Flowable,我通过像这样压缩和过滤来操作它们:

Flowable<Position> position1 = obj1.getPosition(); // position in 3D enviroment
Flowable<Position> position2 = obj2.getPosition();

position1.zipWith(position2, (pos1, pos2) ->
    getDistance(pos1,pos2) //method returning distance between positions
).filter(distance->distance<=5).subscribe();

现在我想使用 class Position 中的方法,当筛选项像这样发出时:

position1.zipWith(position2, (pos1, pos2) ->
    getDistance(pos1,pos2) //method returning distance between positions
).filter(distance->distance<=5).subscribe(pos1.getX()-pos2.getX());

怎么做?

解决这个问题的最简单方法是像这样创建包装器class

class Line {
    Position first;
    Position second;
    Double distance;
}

并使用它转换您的 Rx 链

position1
    .zipWith(position2, (pos1, pos2) -> {
        double distance = getDistance(pos1,pos2);
        return Line(pos1, pos2, distance);
     })
    .filter(line -> line.distance <= 5)
    .subscribe(line.first.getX()-line.second.getX())