如何 return Observable 与特定类型?
How to return Observable with specific type?
我需要return Observable指定泛型类型。但是在 zip 运算符之后我只得到 Observable,没有任何类型。
如何将通常的 Observable
转换为 Observable<T>
?也许有一些 rx 运算符可以做到这一点?
代码示例:
public Observable<Schedule> updateSchedules(final List<ScheduleInfo> schedulesInfo) {
List<Observable<List<ScheduleItem>>> observables = makeScheduleTasks(schedulesInfo);
Observable observable = Observable.zip(observables, objects -> getSchedules(schedulesInfo, objects));
return (Observable<Schedule>)observable; //How to cast?
}
private List<Schedule> getSchedules(List<ScheduleInfo> schedulesInfo, Object[] objects) {
if(objects.length == schedulesInfo.size()){
List<Schedule> schedules = new ArrayList<>(schedulesInfo.size());
for (int i = 0; i < schedulesInfo.size(); i++) {
Object object = objects[i];
schedules.add(new Schedule(schedulesInfo.get(i), (List<ScheduleItem>) object));
}
return schedules;
}
return null;
}
您需要在编译器可以使用的地方提供类型信息:
public Observable<Schedule> updateSchedules(final List<ScheduleInfo> schedulesInfo) {
List<Observable<List<ScheduleItem>>> observables = makeScheduleTasks(schedulesInfo);
Observable<Schedule> observable = Observable.zip(observables, objects -> getSchedules(schedulesInfo, objects));
return observable;
}
应该可以正常工作,只要 getSchedules()
returns 一个 Schedule
.
我需要return Observable指定泛型类型。但是在 zip 运算符之后我只得到 Observable,没有任何类型。
如何将通常的 Observable
转换为 Observable<T>
?也许有一些 rx 运算符可以做到这一点?
代码示例:
public Observable<Schedule> updateSchedules(final List<ScheduleInfo> schedulesInfo) {
List<Observable<List<ScheduleItem>>> observables = makeScheduleTasks(schedulesInfo);
Observable observable = Observable.zip(observables, objects -> getSchedules(schedulesInfo, objects));
return (Observable<Schedule>)observable; //How to cast?
}
private List<Schedule> getSchedules(List<ScheduleInfo> schedulesInfo, Object[] objects) {
if(objects.length == schedulesInfo.size()){
List<Schedule> schedules = new ArrayList<>(schedulesInfo.size());
for (int i = 0; i < schedulesInfo.size(); i++) {
Object object = objects[i];
schedules.add(new Schedule(schedulesInfo.get(i), (List<ScheduleItem>) object));
}
return schedules;
}
return null;
}
您需要在编译器可以使用的地方提供类型信息:
public Observable<Schedule> updateSchedules(final List<ScheduleInfo> schedulesInfo) {
List<Observable<List<ScheduleItem>>> observables = makeScheduleTasks(schedulesInfo);
Observable<Schedule> observable = Observable.zip(observables, objects -> getSchedules(schedulesInfo, objects));
return observable;
}
应该可以正常工作,只要 getSchedules()
returns 一个 Schedule
.