[英]Java method parameter and return class object
我試圖將我之前的帖子中的代碼抽象為util類。 這是util類方法:
private static Gson gson = new GsonBuilder().create();
public static Class getResponseObject(String resourceResponse, String jsonObject, Class responseClass) {
JSONObject jsonResponse = new JSONObject(resourceResponse);
String jsonResponseToString = jsonResponse.getJSONObject(jsonObject).toString();
return gson.fromJson(jsonResponseToString, responseClass.getClass());
}
這是來自另一個班級的電話:
UserIdentifier userIdentifier = ServiceClientUtil.getResponseObject(resourceResponse,
"userIdentifier",
UserIdentifier.class);
但是我收到以下錯誤:
Error:(68, 76) java: incompatible types: java.lang.Class cannot be converted to app.identity.UserIdentifier
如何傳入類對象並返回相同的類對象?
我認為在這種情況下你實際上想要使用Class
以外的東西。 但請注意:將鍵值對(或此類對象表示)序列化為JSON值才有意義,因為原始Integer
不是有效的JSON。
我們可以做的是更改方法的簽名以接受任何對象,並且因為可以鍵入Class
,所以更容易做到。
您的方法的簽名將是(未經測試):
public static <T> T getResponseObject(String resourceResponse,
String jsonObject,
Class<T> responseClass)
這樣,我們可以確保傳遞給此方法的類型是我們得到的實例。 請記住:我不保證這種方法適用於像Integer
這樣的平面值,但理想情況下它應該適用於您創建的任何其他自定義對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.