RxJava 2已经发布,我想从RX 1.2.0迁移到2.0.0,但是我注意到在RxJava 2中没有Func0接口。
开发者在RxJava 2中应该使用什么来代替Func0?
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());
}
});
根据他们在RxJava 1.x和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>
。
io.reactivex.functions.Function
是rx.functions.Func1
,而io.reactivex.functions.BiFunction
是rx.functions.Func2
。所以没有与 Func0 等效的东西吗? - Till - Appviewer.io