Java 如何通过“课程”<;T>;`'List<;MyDevice>;`?
我写了这个方法:Java 如何通过“课程”<;T>;`'List<;MyDevice>;`?,java,json,string,list,generics,Java,Json,String,List,Generics,我写了这个方法: public <T> T jsonToObject(String json, Class<T> klazz) { ObjectMapper mapper = new ObjectMapper(); T object = null; try { object = mapper.readValue(json, klazz); } catch (IOExcepti
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;
}
publicTJSONTObject(字符串json,类klazz){
ObjectMapper mapper=新的ObjectMapper();
T object=null;
试一试{
object=mapper.readValue(json,klazz);
}捕获(IOE异常){
e、 printStackTrace();
}
返回对象;
}
我想称之为:
List<Device> devicesList= jsonUtils.jsonToObject(response.getEntityInputStream(), new TypeLiteral<List<Device>.class);
List devicesList=jsonUtils.jsonToObject(response.getEntityInputStream(),new-TypeLiteral好吧,如果你想用TypeLiteral
调用它(这确实是捕获列表的泛型类型的方法),你的方法需要接受TypeLiteral
作为参数,而不是Class
调用方需要使用匿名类来正确捕获类型:
jsonUtils.jsonToObject(response.getEntityInputStream(),
new TypeLiteral<List<Device>>() {});
jsonUtils.jsonToObject(response.getEntityInputStream(),
新的TypeLiteral(){});
什么是mapper?它是Jackson ObjectMapper的实例吗?如果是,请不要使用TypeLiteral,而是使用Jackson的TypeReference,它具有相同的用途和工作方式。