gpt4 book ai didi

Java 7 泛型类型推断失败

转载 作者:行者123 更新时间:2023-11-30 03:40:52 27 4
gpt4 key购买 nike

我有以下方法:

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。

最佳答案

类型推断可能无法确定 T 应该是 LoginResult。它可以与 Java 8 一起使用,其中类型推断系统已得到改进。

您可以尝试使用目标类型来帮助编译器:

flatMap(this.<LoginResult> checkApiSuccess())

关于Java 7 泛型类型推断失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26861527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com