Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过“课程”<;T>;`'List<;MyDevice>;`?_Java_Json_String_List_Generics - Fatal编程技术网

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,它具有相同的用途和工作方式。