gpt4 book ai didi

Observable 中的过滤器无法应用于 Rxjava 2 中的 Function Boolean

转载 作者:行者123 更新时间:2023-12-02 03:24:32 25 4
gpt4 key购买 nike

以下代码中的过滤器试图过滤掉奇数,但我无法编译代码,因为它在提示

错误:(114, 25) 错误:不兼容的类型:> 无法转换为谓词

当我使用 rxjava 1 和 Func1 时没问题,我怎样才能使其与 rxjava 2 一起工作?

    List<Integer> ints = new ArrayList<>();
for (int i=1; i<10; i++) {
ints.add(new Integer(i));
}
Log.d("RxFlapmapActivity", "flapMapEx2 1,2,3,4,5,6,7,8,9");
Observable.just(ints)
.flatMap(new Function<List<Integer>, Observable<Integer>>() {
@Override
public Observable<Integer> apply(List<Integer> ints) {
return Observable.fromIterable(ints);
}
})
.filter(new Function<Integer, Boolean>() {
@Override
public Boolean apply(Integer integer) {
Log.d("RxFlapmapActivity", "flapMapEx2222222 filter out odd numbers.........");
return integer.intValue() % 2 == 0;
}
})
.flatMap(new Function<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> apply(Integer integer) {
for (int i = 0; i < 1000000000; i++) {
}
return multiplyInt(integer, 2);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {

}
@Override
public void onComplete() {
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(Integer integer) {
Log.d("RxFlapmapActivity", "flapMapEx2 onNext>>>" + integer.toString());
}
});

最佳答案

在 rxjava2 中,我相信 filter 使用 Predicate 而不是 Function 例如

.filter(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) {
Log.d("RxFlapmapActivity", "flapMapEx2222222 filter out odd numbers.........");
return integer.intValue() % 2 == 0;
}
})

关于Observable 中的过滤器无法应用于 Rxjava 2 中的 Function Boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41617461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com