Class 中的静态泛型方法 - Java
Static Generic Method in Class - Java
我在 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());
因此 Observable 是通用的,可以是任何对象,如果我想在它上面添加这两行并且 return 它在 Statis 方法中,我需要使该方法也通用
我试图做的是通过参数传递可观察对象,添加设置并return返回如下:
public class UtilsObservable<T> {
public static Observable<T> setupObservable(Observable<T> observable) {
return observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation());
}
我在这里遇到一个编译错误:
UtilsObservable.this cannot be referenced from a static context
我的问题是:
那么无论如何都可以做到吗? Generic method takes generic object modify it and return 同一类型 ?
问题是因为通用类型 T
链接到 UtilsObservable
class 的特定实例,但在静态上下文中您没有要引用的实例.您需要使方法通用,独立于 class 的通用类型。
public class UtilsObservable<T> {
public static <T> Observable<T> setupObservable(Observable<T> observable) {
return observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation());
}
注意方法类型前的附加 <T>
。这为方法本身提供了一个通用类型,它不再连接到 class.
的实例
第二个跟随 resueman 回答:
public static <T> Observable<T> setupObservable(Observable<T> observable) {
return observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation());
我在 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());
因此 Observable 是通用的,可以是任何对象,如果我想在它上面添加这两行并且 return 它在 Statis 方法中,我需要使该方法也通用
我试图做的是通过参数传递可观察对象,添加设置并return返回如下:
public class UtilsObservable<T> {
public static Observable<T> setupObservable(Observable<T> observable) {
return observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation());
}
我在这里遇到一个编译错误:
UtilsObservable.this cannot be referenced from a static context
我的问题是:
那么无论如何都可以做到吗? Generic method takes generic object modify it and return 同一类型 ?
问题是因为通用类型 T
链接到 UtilsObservable
class 的特定实例,但在静态上下文中您没有要引用的实例.您需要使方法通用,独立于 class 的通用类型。
public class UtilsObservable<T> {
public static <T> Observable<T> setupObservable(Observable<T> observable) {
return observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation());
}
注意方法类型前的附加 <T>
。这为方法本身提供了一个通用类型,它不再连接到 class.
第二个跟随 resueman 回答:
public static <T> Observable<T> setupObservable(Observable<T> observable) {
return observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation());