如下所示,我正在学习如何使用rxjava。我想知道如何将foreach与可观察对象结合使用。 问题是,当我使用forEach时,我收到编译错误:
add cast to method receiver
请让我知道如何正确使用forEach。
预先感谢
代码:
public static void main(String[] args) {
Observable<List<Person>> observables = Observable.create(e-> {
for(List<Person> p : Main.getPersons()) {
e.onNext(p);
}
e.onComplete();
});
observables
//.subscribeOn(Schedulers.newThread())//newThread
.forEach(p->p.size())
.map(p->p+"..STRING")
//.delay(5, TimeUnit.SECONDS)
//.interval(0, 5, TimeUnit.SECONDS)
.observeOn(Schedulers.io())
.subscribe(new Observer() {
@Override
public void onComplete() {
// TODO Auto-generated method stub
System.out.println("onCompleted");
}
@Override
public void onError(Throwable arg0) {
// TODO Auto-generated method stub
}
@Override
public void onNext(Object arg0) {
// TODO Auto-generated method stub
System.out.println("onNextFromObserver: " + arg0);
}
@Override
public void onSubscribe(Disposable arg0) {
// TODO Auto-generated method stub
}
});
}
private static <T> Observable<T> toObservable(T s) {
return Observable.just(s);
}
private static List<List<Person>> getPersons() {
return Arrays.asList(
Arrays.asList(new Person("Sanna1", 59, "EGY"), new Person(null, 59, "EGY"), new Person("Sanna3", 59, null)),
Arrays.asList(new Person("Mohamed1", 59, "EGY"), new Person(null, 59, "EGY")),
Arrays.asList(new Person("Ahmed1", 44, "QTR"), new Person("Ahmed2", 44, "QTR"), new Person(null, null, "QTR")),
Arrays.asList(new Person("Fatma", 29, "KSA")),
Arrays.asList(new Person("Lobna", 24, "EGY")));
}
}