Java 返回从可观测数据中的可观测数据收集的结果的最佳实践是什么?
我在我的项目中使用RxJava,我对这段代码有点困惑:Java 返回从可观测数据中的可观测数据收集的结果的最佳实践是什么?,java,java-7,rx-java,Java,Java 7,Rx Java,我在我的项目中使用RxJava,我对这段代码有点困惑: @Override public Observable<Hexagon<T>> getHexagons() { return Observable.create(new OnSubscribe<Hexagon<T>>() { @Override public void call(final Subscriber&l
@Override
public Observable<Hexagon<T>> getHexagons() {
return Observable.create(new OnSubscribe<Hexagon<T>>() {
@Override
public void call(final Subscriber<? super Hexagon<T>> subscriber) {
hexagonDataStorage.getCoordinates().subscribe(new Subscriber<CubeCoordinate>() {
@Override
public void onCompleted() {
subscriber.onCompleted();
}
@Override
public void onError(final Throwable throwable) {
System.err.println(String.format("Cannot get Hexagons: <%s>", throwable.getMessage()));
}
@Override
public void onNext(final CubeCoordinate cubeCoordinate) {
subscriber.onNext(new HexagonImpl<>(gridData, cubeCoordinate, hexagonDataStorage));
}
});
}
});
}
@覆盖
公共可观测的getHexagons(){
return Observable.create(新建OnSubscribe()){
@凌驾
公共无效呼叫(最终用户回答您的第一个问题-您要找的运营商是:
公共可观测的getHexagons(){
返回hexagonDataStorage.getCoordinates()
.map(立方体坐标->新六边形impl(网格数据、立方体坐标、六边形数据存储))
}
它的功能完全符合您的要求—它通过应用函数来转换每个项目
回答你的第二个问题-我强烈建议你总是重写onError
,否则,如果RxJava流遇到异常,它将抛出。你可以创建一个扩展Subscriber
的抽象类,在那里实现onError
,并将其他两个方法保持抽象。我明白了。我正在使用java 7e所以我没有lambdas,但我会调查的,谢谢!
public Observable<Hexagon<T>> getHexagons() {
return hexagonDataStorage.getCoordinates()
.map(cubeCoordinate -> new HexagonImpl<>(gridData, cubeCoordinate, hexagonDataStorage))
}