"没有类型变量R的实例,因此Observable符合Observable"更新到RxJava2时出错

时间:2016-12-06 16:53:34

标签: java android rx-java retrofit2 rx-java2

我正在尝试使用retrofit and rxJava调用API。使用RxJava 1时,以下代码似乎运行良好,但一旦我更新为RxJava 2,我就会收到此错误:

错误:

  

不存在类型变量R的实例,以便Observable符合   可观察到的

Api

Observable<HttpResult<List<Article>>> getList(@Query("key")String key);

这里完成了Api请求,这是我在.map运算符

中遇到此错误的地方
Observable cache=providers.getList().map(new HttpRsltFunc<List<Article>>());

结果类型号:

private  class HttpRsltFunc<T> implements Func1<HttpResult<T>, T> {
       @Override
       public T call(HttpResult<T> httpResult) {   
           return httpResult.getData();
       }
   }

修改:

导入rx.Observable而不是io.reactivex.Observable时代码运行正常。

谢谢

1 个答案:

答案 0 :(得分:3)

这种情况正在发生,因为rxjava2已迁移到他们自己的functional interfaces,因此您需要实现不同的接口而不是Func1

不要忘记将您的改装适配器更新为rxjava2版本: compile 'com.squareup.retrofit2:adapter-rxjava2:latest.version'