繁体   English   中英

类中的静态泛型方法-Java

[英]Static Generic Method in Class - Java

我正在Android上使用RxJava做一些事情,

在像这样使用它之前,我总是在可观察对象上做同样的事情:

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,添加设置并返回如下:

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

图片

我的问题是:

那么无论如何可以做到这一点? 泛型方法需要泛型对象对其进行修改并返回相同的类型?

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

public class UtilsObservable<T> {

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

注意方法类型之前的其他<T> 这给该方法本身提供了一个通用类型,该通用类型不再连接到该类的实例。

首先, 请不要破坏链条

第二,遵循resueman的答案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM