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())
我有两个 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())