【发布时间】:2012-10-18 14:24:38
【问题描述】:
我正在尝试创建一个使用 Jackson 反序列化 POJO 的类。
看起来像这样……
public class DeserialiserImp<T> implements Deserialiser<T> {
protected ObjectMapper objectMapper = new ObjectMapper();
@Override
public T get(String content, Class clazz) throws IOException {
return (T) objectMapper.readValue(content, clazz);
}
@Override
public List<T> getList(String content, Class clazz) throws IOException {
return objectMapper.readValue(content, TypeFactory.collectionType(ArrayList.class, clazz));
}
}
我有 2 个关于此实现的问题。
首先是我将类类型传递给方法,以便对象映射器知道应该反序列化的类型。有没有更好的使用泛型的方法?
此外,在 get 方法中,我将从 objectMapper 返回的对象转换为 T。这似乎特别讨厌,因为我必须在此处转换 T,然后我还必须从方法中转换对象类型,即调用它。
我在这个项目中使用 Roboguice,所以如果我可以通过注入更改类型然后注释我需要它返回的 Generic 类型的对象,那就太好了。我读到了TypeLiteral 并想知道它是否可以解决这个问题?
【问题讨论】:
标签: java android jackson guice roboguice