2017-12-12 13 views
-1

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; 
    } 
+0

'관찰 가능'선언에 유형 정보가 누락되었습니다. 당신이 그것을 제공하면 어떻게됩니까? –

+0

여기에 언급 된 두 가지 메소드의 유형은 무엇입니까? –

+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을 반환로 .