я следующий метод:Java 7 дженерики вывод типа не может
protected <T> Func1<ApiResponse<T>, Observable<T>> checkApiSuccess() {
return new Func1<ApiResponse<T>, Observable<T>>() {
@Override
public Observable<T> call(ApiResponse<T> response) {
if (response.isSuccess()) {
return Observable.from(response.getResult());
}
return Observable.error(new ApiException(response.getError()));
}
};
}
Почему эта работа:
Func1<ApiResponse<LoginResult>, Observable<LoginResult>>
checkApiSuccessFunc = checkApiSuccess();
return apiService
.login(params)
.flatMap(checkApiSuccessFunc);
, но это не делает:
return apiService
.login(params)
.flatMap(checkApiSuccess());
Я получаю ошибка времени компиляции no suitable method found for flatMap(Func1<ApiResponse<Object>>, Observable<Object>)
. Как-то при использовании метода непосредственно тип T больше не может быть сопоставлен с LoginResult.
Подпись flatMap? – anstarovoyt
Кстати, потоки являются частью Java 8. Как это Java 7? – RealSkeptic
@Andrew: '' 'public final Observable flatMap (Func1 Super T,? Extends Observable extends R>> func)' '' –