我写了这个方法:
public <T> T jsonToObject(String json, Class<T> klazz) {
ObjectMapper mapper = new ObjectMapper();
T object = null;
try {
object = mapper.readValue(json, klazz);
} catch (IOException e) {
e.printStackTrace();
}
return object;
}
我想称之为:
List<Device> devicesList= jsonUtils.jsonToObject(response.getEntityInputStream(), new TypeLiteral<List<Device>.class);
传递Class<T>
List<Device>
的正确方法是什么?
答案 0 :(得分:4)
好吧,如果你想用TypeLiteral
调用它(这确实是捕获列表的泛型类型的方法),你的方法需要接受TypeLiteral<T>
作为参数,而不是Class<T>
。
调用者需要使用匿名类来正确捕获类型:
jsonUtils.jsonToObject(response.getEntityInputStream(),
new TypeLiteral<List<Device>>() {});