【问题标题】:"No Instance of type variable R exist so that Observable conforms to Observable" Error when updating to RxJava2“不存在类型变量 R 的实例,因此 Observable 符合 Observable”更新到 RxJava2 时出错
【发布时间】:2016-12-06 16:53:33
【问题描述】:

我正在尝试使用 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 时,代码可以正常工作。

谢谢

【问题讨论】:

  • 可以定义为Observable&lt;List&lt;Article&gt;&gt; cache
  • 试过了,同样的问题:/
  • 感谢您添加编辑。这也解决了我的问题。

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


【解决方案1】:

这是因为 rxjava2 迁移到了自己的functional interfaces,所以你需要实现不同的接口而不是Func1

别忘了将改造适配器更新到 rxjava2 版本: compile 'com.squareup.retrofit2:adapter-rxjava2:latest.version'

【讨论】:

  • 是的,这就是问题所在,事实上我没有使用适当的 RxCache 来处理新的 RxJava。谢谢。
猜你喜欢
  • 2017-12-04
  • 2020-11-04
  • 2019-12-16
  • 2022-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 2020-07-13
相关资源
最近更新 更多