RxJava - 如何从没有lambda的单个对象中获取对象

时间:2018-04-06 23:23:07

标签: android rx-java

我对RxJava完全不熟悉。我正在访问一个返回Single<Location>的方法。我需要Location。这是一个使用Java 1.7的Android项目,所以没有lambdas,这就是为什么我被卡住了。我看到的每个例子和每本书都使用lambdas。如何在不使用lambdas的情况下从Location获取此Single

locationProvider.getLastKnownLocationWithTimeout() // returns Single<Location>
        .flatMap(/* what should go here? */);

1 个答案:

答案 0 :(得分:3)

Here is the signature for Single<T>.flatMap

public final <R> Single<R> flatMap(Function<? super T,? extends SingleSource<? extends R>> mapper)

其中Functionan interface with exactly one method, apply

所以在你的情况下,我相信你需要像

这样的东西
locationProvider.getLastKnownLocationWithTimeout()
        .flatMap(new Function<Location, Single<String>>() {
            @Override
            public Single<String> apply(Location location) {
                // apply transformation to e.g. String here
            }
        });

其中类型String是占位符,应根据您实际尝试完成的转换进行更改。

请注意,此答案是在IDE外部输入的,因此可能缺少一两个大括号。