我有一個類 utils,其中有一個parseError函式。目標是描述改造給出的錯誤回應。所以我只需要從某個類中呼叫一個函式。
public static BaseApiResponse<LoginResponse,LoginErrorResponse> parseError(Response<?> response) {
try {
Gson gson = new Gson();
Type type = new TypeToken<BaseApiResponse<LoginResponse,LoginErrorResponse>>() {}.getType();
return gson.fromJson(response.errorBody().charStream(), type);
}catch(Exception e) {
BaseApiResponse erResponse = new BaseApiResponse();
erResponse.setMessage("Error unexpected in JSON!");
return erResponse;
}
}
這是我嘗試的完整功能。
問題是,我有一個 BaseResponseAPI<DATA, ERROR>,其中類有一個動態物件類引數。如何使我創建的函式(parseError)回傳動態物件類資料?我希望呼叫是動態的示例是這樣的:
BaseApiResponse<LoginResponse, LoginErrorResponse> errResponse = CommonUtils.parseError(response);
BaseApiResponse<RegisterResponse, RegisterErrorResponse> errResponse = CommonUtils.parseError(response);
uj5u.com熱心網友回復:
您可以編輯函式以使用 Java Generic,如下所示:
public static <D,E> BaseApiResponse<D,E> parseError(Response<?> response) {
try {
Gson gson = new Gson();
Type type = new TypeToken<BaseApiResponse<LoginResponse,LoginErrorResponse>>() {}.getType();
return gson.fromJson(response.errorBody().charStream(), type);
}catch(Exception e) {
BaseApiResponse<D,E> erResponse = new BaseApiResponse<D,E>();
erResponse.setMessage("Error unexpected in JSON!");
return erResponse;
}
}
然后你可以像這樣呼叫函式:
BaseApiResponse<LoginResponse, LoginErrorResponse> errResponse = CommonUtils.<LoginResponse, LoginErrorResponse>parseError(response);
//or other generic class
BaseApiResponse<RegisterResponse, RegisterErrorResponse> errResponse = CommonUtils.<RegisterResponse, RegisterErrorResponse>parseError(response);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/524116.html
標籤:爪哇安卓改造
上一篇:插入房間資料庫物體時如何忽略主鍵
