如何将 SubscribeOn 结果转换为正确的类型

How to cast SubscribeOn result to proper type

我对这段代码片段有疑问:

@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());
    }

如您所见,我想 return 单独订阅 io scheduler。 Return 类型 - Single<List<OrderItem>>,但运算符 subscribeOn returns Single<Object>。编译器用 "incompatible type" 对我大喊大叫(我正在为 Android 使用 Jack 编译器)有什么方法可以转换 subscribeOn 的结果吗? ("cast" 运算符不起作用,因为它不支持泛型)

subscribeOn 没有问题,只需将 create 调用修改为

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

例如参见here了解详情。