java - 类中的静态泛型方法 - Java

标签 java android generics rx-java rx-android

我在 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 方法中返回它,我需要使该方法也通用

我试图做的是通过参数传递可观察值,添加设置并将其返回,如下所示:

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

我的问题是:

那么这可以通过任何方式完成吗?通用方法接受通用对象修改它并返回相同的类型?

最佳答案

问题是因为泛型类型 T链接到 UtilsObservable 的特定实例类,但在静态上下文中,您没有可供引用的实例。您需要使方法通用,独立于类的通用类型。

public class UtilsObservable<T> {

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

注意额外的<T>在方法类型之前。这为方法本身提供了一个泛型类型,它不再连接到该类的实例。

关于java - 类中的静态泛型方法 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38336294/

相关文章:

android - 无法识别启动 Activity : Unable to list apks Error while Launching activity

java - 无法使用 Apache 从 Android 向 Django Web 服务器发出 http 请求

generics - 在不使用关联类型的情况下简化类型签名

arrays - 如何使用泛型和特征从数组中获取最大的元素?

Java 泛型重组/组合

java - MongoDB 批量插入不适用于 java 驱动程序 2.11.2

java - 当字符串长度为奇数时使用递归打印字符串的基本情况

java - Applet 需要更新 Java

Android 1.6 Mapview 在用户与 map 交互之前不会显示路况

java - 如何将自定义消息附加到异常(在不能抛出异常的重写方法中)?