我正在尝试将我的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
如何传入类对象并返回相同的类对象?
答案 0 :(得分:2)
我认为在这种情况下,您实际上想要使用Class
之外的其他内容。但请注意:将键值对(或此类对象表示)序列化为JSON值才有意义,因为原始Integer
不是有效的JSON。
我们可以做的是更改方法的签名以接受任何对象,并且由于可以键入Class
,因此更容易做到。
您的方法的签名将是(未经测试):
public static <T> T getResponseObject(String resourceResponse,
String jsonObject,
Class<T> responseClass)
这样,我们可以确保传递给此方法的类型是我们得到的实例。请记住:我并不保证此方法适用于Integer
等平面值,但理想情况下,它适用于您创建的任何其他自定义对象。