Java方法参数和返回类对象

时间:2016-02-04 21:46:24

标签: java

我正在尝试将我的previous post中的代码抽象为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

如何传入类对象并返回相同的类对象?

1 个答案:

答案 0 :(得分:2)

我认为在这种情况下,您实际上想要使用Class之外的其他内容。但请注意:将键值对(或此类对象表示)序列化为JSON值才有意义,因为原始Integer不是有效的JSON。

我们可以做的是更改方法的签名以接受任何对象,并且由于可以键入Class,因此更容易做到。

您的方法的签名将是(未经测试):

public static <T> T getResponseObject(String resourceResponse,
                                      String jsonObject,
                                      Class<T> responseClass)

这样,我们可以确保传递给此方法的类型是我们得到的实例。请记住:我并不保证此方法适用于Integer等平面值,但理想情况下,它适用于您创建的任何其他自定义对象。