RxJava 2几乎已经发布,我想从RX 1.2.0迁移到2.0.0,但我注意到RxJava 2中没有Func0接口。
开发人员应该在RxJava 2中使用哪些代替Func0?
答案 0 :(得分:17)
RxJava2使用JDK的Callable接口(https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Callable.html)
Observable.defer(http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Observable.html#defer(java.util.concurrent.Callable))
的示例Observable.defer(new Callable<ObservableSource<MyObject>>() {
@Override
public ObservableSource<MyObject> call() throws Exception {
return Observable.just(new MyObject());
}
});
答案 1 :(得分:5)
从他们对what's changed between RxJava 1.x and 2.x的阐述:
我们通过定义遵循Java 8的命名约定
io.reactivex.functions.Function
和io.reactivex.functions.BiFunction
, 并分别将Func3
-Func9
重命名为Function3
-Function9
。FuncN
被Function<Object[], R>
类型声明替换。此外,需要谓词的运算符不再使用
Func1<T, Boolean>
,而是具有单独的原始返回类型Predicate<T>
(由于没有自动装箱,允许更好的内联)。
io.reactivex.functions.Functions
实用程序类提供了常见功能 功能来源和转化为Function<Object[], R>
。
答案 2 :(得分:3)
RxJava2使用java7中的<table> <tr> <td>{{ selectedWatchList.name }}</td> <td>{{ selectedWatchList.xid }}</td> <td>{{ selectedWatchList.userId }}</td> </tr> </table>
而不是java.util.concurrent.Callable