Java 返回从可观测数据中的可观测数据收集的结果的最佳实践是什么?

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

我在我的项目中使用RxJava,我对这段代码有点困惑:

    @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))
}