Десериализация общего типа с Джексоном
Я пытаюсь создать класс, который использует Джексона для десериализации 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 в этом проекте, поэтому было бы неплохо, если бы я мог изменить тип с помощью инъекции, а затем аннотировать объект, тип которого мне нужно вернуть. Я читаю оTypeLiteral и интересно, может ли это решить эту проблему?