如何用通配符替换此泛型类型

时间:2015-12-16 12:58:17

标签: java generics

我有这个班级

public static class ErrorUtils {

    public static APIError parseError(Response<LoginResponse> response, Retrofit retrofit) {
        Converter<ResponseBody, APIError> converter =
                retrofit.responseConverter(APIError.class, new Annotation[0]);

        APIError error;

        try {
            error = converter.convert(response.errorBody());
        } catch (IOException e) {
            e.printStackTrace();
            return new APIError();
        }

        return error;
    }
}

我想更改parseError的方法签名以接受任何类型的Response<>而不只是Response<LoginResponse>

我该怎么做?

编辑:澄清:我正在阅读有关Retrofit 2错误处理的本教程。 https://futurestud.io/blog/retrofit-2-simple-error-handling

我想将ErrorUtils类移动到我的RetrofitClient类,然后移出LoginUserRetrofitImpl类,以便我可以在所有网络请求改进实现中使用此错误处理代码。

1 个答案:

答案 0 :(得分:2)

由于您似乎并未真正使用LoginResponse特有的内容,因此您可能只需将其更改为

public static APIError parseError(Response<?> response, Retrofit retrofit) {
    Converter<ResponseBody, APIError> converter =
            retrofit.responseConverter(APIError.class, new Annotation[0]);

    APIError error;

    try {
        error = converter.convert(response.errorBody());
    } catch (IOException e) {
        e.printStackTrace();
        return new APIError();
    }

    return error;
}