无法在rxjava 2中解析方法Observable.from

s-h*_*ter 14 rx-java rx-java2

在rxjava 1中的Observable类中有一个from方法但在rxjava 2中找不到.如何在以下代码中替换rxjava 2中的from方法:

    List<Integer> ints = new ArrayList<>();
    for (int i=1; i<10; i++) {
        ints.add(new Integer(i));
    }
    Observable.just(ints)
            .flatMap(new Function<List<Integer>, Observable<Integer>>() {
                @Override
                public Observable<Integer> apply(List<Integer> ints) {
                    return Observable.from(ints);
                }
            })
Run Code Online (Sandbox Code Playgroud)

Pav*_*mar 19

您可以使用 Observable.fromIterable(source)

来自文档:

一些运算符重载已经使用后缀重命名,例如fromArray,fromIterable等.原因是当使用Java 8编译库时,javac通常无法消除功能接口类型之间的歧义.

List<Integer> ints = new ArrayList<>();
for (int i=1; i<10; i++) {
    ints.add(new Integer(i));
}
Observable.just(ints)
        .flatMap(new Function<List<Integer>, Observable<Integer>>() {
            @Override
            public Observable<Integer> apply(List<Integer> ints) {
                return Observable.fromIterable(ints);
            }
        })
Run Code Online (Sandbox Code Playgroud)


Ale*_*yev 6

您无需使用,.just()因为您可以Observable通过fromIterable()运营商直接从列表中创建.

    Observable.fromIterable(ints)
Run Code Online (Sandbox Code Playgroud)


ces*_*rds 6

我想这有点晚了,但我只是想让人们知道,RxJava 文档中from运算符相关的 API 更改:

from消歧义为fromArray, fromIterable,fromFuture