类中的静态通用方法 - Java

时间:2016-07-12 18:21:06

标签: java android generics 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());

因此,Observable是通用的,可以是任何对象,如果我想在它上面添加这两行并在Statis方法中返回它,我需要使该方法也通用

我想要做的是传递observable by参数,添加设置并将其返回如下:

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

pic

我的问题是:

那么这可以做到吗?泛型方法需要通用对象修改它并返回相同的类型吗?

2 个答案:

答案 0 :(得分:5)

问题是因为泛型类型T链接到UtilsObservable类的特定实例,但在静态上下文中,您没有要引用的实例。您需要使方法具有通用性,而与类的泛型类型无关。

public class UtilsObservable<T> {

    public static <T> Observable<T> setupObservable(Observable<T> observable) {
        return observable.observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.computation());
}

注意方法类型之前的附加<T>。这使方法本身成为泛型类型,不再连接到类的实例。

答案 1 :(得分:2)

首先,don't break the chain,请。

其次是 resueman 回答:

public static <T> Observable<T> setupObservable(Observable<T> observable) {
    return observable.observeOn(AndroidSchedulers.mainThread())
        .subscribeOn(Schedulers.computation());