簡體   English   中英

Java方法參數和返回類對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM