Deserializacja rodzaju ogólnego za pomocą Jacksona

Próbuję stworzyć klasę, która używa Jacksona, aby zneutralizować POJO.

To wygląda tak...

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));
        }

    }

Mam 2 pytania dotyczące tej implementacji.

Po pierwsze, przekazuję typ klasy do metod, więc obiektmapper zna typ, który powinien deserializować. Czy istnieje lepszy sposób na stosowanie leków generycznych?

Również w metodzie get rzucam obiekt zwrócony z obiektu objectMapper do T. Wydaje się to szczególnie paskudnym sposobem na zrobienie tego, ponieważ muszę tu rzucić T, a następnie muszę także rzutować typ obiektu z metody, która go wywołuje.

Używam Roboguice w tym projekcie, więc byłoby miło, gdybym mógł zmienić typ poprzez wtrysk, a następnie opisać obiekt, którego typ Generic potrzebuję, aby powrócił. Czytałem oTypeLiteral i zastanawiasz się, czy to może rozwiązać ten problem?

questionAnswers(2)

yourAnswerToTheQuestion