我正在尝试创建一个使用 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));
}
}
我有两个关于这个实现的问题。
首先是我将类类型传递给方法,以便对象映射器知道应该反序列化的类型。有没有更好的方法使用泛型?
同样在 get 方法中,我将从 objectMapper 返回的对象转换为 T。这似乎特别讨厌这样做,因为我必须在这里转换 T,然后我还必须从调用它的方法转换对象类型。
我在这个项目中使用 Roboguice,所以如果我可以通过注入更改类型,然后注释我需要它返回的通用类型的对象,那就太好了。我阅读了TypeLiteral并想知道它是否可以解决这个问题?