我想连锁两个RxJava Single
实例来创建Observable
,它们发出两个结果。另外,我需要第一个Single
的结果来创建第二个。如何帮助Java解析RxJava组合方法中的类型?
这是我曾尝试:
public static <A extends C, B extends C, C> Observable<C> chain(final Single<A> a, final Function<A, Single<B>> f) {
return Observable.concat(
a.toObservable(),
a.flatMap(f::apply).toObservable());
}
用法可能是这样的:
final Observable<Event> task = MoreObservables.chain(
writeFile("Hello, world", "hello.txt"),
writeFileEvent -> processFile(writeFileEvent.path));
然而,Java抱怨说,它无法解析类型:
Error:(54, 61) java: incompatible types: cannot infer type-variable(s) A,B,C
(argument mismatch; bad return type in lambda expression
io.reactivex.Single<ProcessFileEvent> cannot be converted to io.reactivex.Single<Event>)
中当然,ProcessFileEvent
执行Event
。
我该如何编写我的函数,以便Java可以计算出类型?还是有更简单的方法来实现这一点?
这完美地工作,而链接的文章是非常有帮助了。 – sdgfsdh