如何传递`List <mydevice>`的`Class <t>`?

时间:2016-03-21 12:17:57

标签: 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 (IOException e) {
            e.printStackTrace();
        }
        return object;
    }

我想称之为:

List<Device> devicesList= jsonUtils.jsonToObject(response.getEntityInputStream(), new TypeLiteral<List<Device>.class);

传递Class<T> List<Device>的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

好吧,如果你想用TypeLiteral调用它(这确实是捕获列表的泛型类型的方法),你的方法需要接受TypeLiteral<T>作为参数,而不是Class<T>

调用者需要使用匿名类来正确捕获类型:

jsonUtils.jsonToObject(response.getEntityInputStream(), 
                       new TypeLiteral<List<Device>>() {});