【问题标题】:How to cast SubscribeOn result to proper type如何将 SubscribeOn 结果转换为正确的类型
【发布时间】:2017-08-01 09:42:40
【问题描述】:

我对这段代码有疑问:

@Override
    public Single<List<Order>> getOrders() {
        return Single.create(subscriber -> {
            List<Order> orders = new ArrayList<>();
            database.beginTransaction();

            Cursor cursor = database.query(OrdersSqliteTable.TABLE_NAME,
                    null, null, null, null, null, null);

            cursor.moveToFirst();
            while (!cursor.isAfterLast()) {
                orders.add(OrdersSqliteTable.cursorToOrder(cursor));
                cursor.moveToNext();
            }

            database.setTransactionSuccessful();
            database.endTransaction();

            subscriber.onSuccess(orders);
        }).subscribeOn(Schedulers.io());
    }

如您所见,我想返回 Single 订阅到 io 调度程序。返回类型 - Single&lt;List&lt;OrderItem&gt;&gt;,但运算符 subscribeOn 返回 Single&lt;Object&gt;。编译器用“不兼容的类型”对我大喊大叫(我正在为 Android 使用 Jack 编译器)有没有办法转换 subscribeOn 的结果? (“cast”运算符不起作用,因为它不支持泛型)

【问题讨论】:

    标签: android rx-java2


    【解决方案1】:

    subscribeOn没有问题只需修改create调用即可

      return Single.<List<Order>>create(subscriber -> {
      ...
    

    例如查看here了解详情。

    【讨论】:

      猜你喜欢
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      相关资源
      最近更新 更多