【发布时间】: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<List<OrderItem>>,但运算符 subscribeOn 返回 Single<Object>。编译器用“不兼容的类型”对我大喊大叫(我正在为 Android 使用 Jack 编译器)有没有办法转换 subscribeOn 的结果? (“cast”运算符不起作用,因为它不支持泛型)
【问题讨论】: