MBH*_*MBH 0 java generics android rx-java rx-android
我在Android上使用RxJava来做一些事情,
在使用之前我总是在observable上做同样的事情:
Observable<AnyObject> observable = getSomeObservable();
// The next 2 lines are the lines that i always add them to any Observable
observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation());
Run Code Online (Sandbox Code Playgroud)
因此,Observable是通用的,可以是任何对象,如果我想在它上面添加这两行并在Statis方法中返回它,我需要使该方法也是Generic
我试图做的是通过参数传递observable,添加设置并将其返回如下:
public class UtilsObservable<T> {
public static Observable<T> setupObservable(Observable<T> observable) {
return observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation());
}
Run Code Online (Sandbox Code Playgroud)
我在这里遇到编译错误说:
UtilsObservable.this cannot be referenced from a static context
Run Code Online (Sandbox Code Playgroud)
我的问题是:
那么这可以做到吗?通用方法采用泛型对象修改它并返回相同的类型?
问题是因为泛型类型T链接到类的特定实例UtilsObservable,但在静态上下文中,您没有要引用的实例.您需要使方法通用,独立于类的泛型类型.
public class UtilsObservable<T> {
public static <T> Observable<T> setupObservable(Observable<T> observable) {
return observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation());
}
Run Code Online (Sandbox Code Playgroud)
请注意<T>方法类型之前的附加内容.这使方法本身成为泛型类型,不再连接到类的实例.
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |