【发布时间】:2016-01-09 22:22:33
【问题描述】:
基于这个问题How to get a class instance of generics type T 我实现了以下类:
public class OkJsonConverter<T> {
final Class<T> typeParameterClass;
public OkJsonConverter(Class<T> typeParameterClass) {
this.typeParameterClass = typeParameterClass;
}
protected T processJson(String json) throws OkClientException {
T object = null;
ObjectMapper objectMapper = new ObjectMapper();
try {
JsonNode jsonNode = objectMapper.readTree(json);
if (jsonNode.get("error_code") != null) {
Error error = objectMapper.treeToValue(jsonNode, Error.class);
throw new OkClientException("API returned error", error);
} else {
object = objectMapper.treeToValue(jsonNode, typeParameterClass);
}
} catch (IOException e) {
throw new OkClientException("unable to process json", e);
}
return object;
}
}
我可以将这个类与泛型参数一起使用,例如:
return new OkJsonConverter<User>(User.class).processJson(response.getBody());
但现在我正在努力如何让它使用像这样的嵌套泛型参数List<Method>
此代码不起作用:
return new OkJsonConverter<List<Method>>(List<Method>.class).processJson(response.getBody());
请帮助更改此代码以使其正常工作。
【问题讨论】:
标签: java generics jackson java-8