2017-12-12 22 views
-1

Observable指定のジェネリックタイプを返す必要があります。しかし、zip演算子の後では、私はObservableしか得られません。返品の方法特定の種類のものを確認しますか?

通常のキャスト修正方法ObservableObservable<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; 
    } 
+0

'observable'の宣言にタイプ情報がありません。あなたがそれを提供するとどうなりますか? –

+0

ここで参照される2つのメソッドのタイプは何ですか? –

+0

@BobDalgleish "Observable .zip" zip演算子がまったく見つからない –

答えて

1

あなたはコンパイラがそれを使用することができる場所で型情報を提供する必要があります。

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()Scheduleを返すよう、うまく動作するはずです。

関連する問題