.ofType(class) 指定某个类型的class,过滤属于这个类型的的结果,其它抛弃
例子:
Observable.just("first", 2, 3, "four").ofType(Integer.class).subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
LogUtils.d("------>call():" + integer);
}
});
结果:
03-01 13:03:18.350 7828-7828/com.rxandroid.test1 D/----->: ------>call():2
03-01 13:03:18.350 7828-7828/com.rxandroid.test1 D/----->: ------>call():3
在这里过滤掉了非Integer类型的数据,只有2,3符合要求
当传递Object.class时并不会过滤任何数据,所有数据都是其子类
结合filter操作符演示一个例子:找出集合中大于5的数
Object[] data = {"first", "2", 3, "four", 5, 6, 7};
Observable.from(data).ofType(Integer.class).filter(new Func1<Integer, Boolean>() {
@Override
public Boolean call(Integer integer) {
return integer > 5;
}
}).subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
LogUtils.d("------>call():" + integer);
}
});
结果为:
03-01 13:19:48.210 12414-12414/com.rxandroid.test1 D/----->: ------>call():6
03-01 13:19:48.210 12414-12414/com.rxandroid.test1 D/----->: ------>call():7