title: Deserializing a Generic Type with Jackson
body: <p>I am trying to make a class that uses the Jackson to deserialize POJO's.</p>
  
  <p>It looks like this...</p>
  
  <pre><code>public class DeserialiserImp&lt;T&gt; implements Deserialiser&lt;T&gt; {
  
          protected ObjectMapper objectMapper = new ObjectMapper();
  
          @Override
          public T get(String content, Class clazz) throws IOException {
              return (T) objectMapper.readValue(content, clazz);
          }
  
          @Override
          public List&lt;T&gt; getList(String content, Class clazz) throws IOException {
              return objectMapper.readValue(content, TypeFactory.collectionType(ArrayList.class, clazz));
          }
  
      }
  </code></pre>
  
  <p>I have 2 questions about this implementation.</p>
  
  <p>The first is that I am passing the class type into the methods so the objectmapper knows the type that should deserialize. Is there a better way using generics?</p>
  
  <p>Also in the get method I am casting an object returned from the objectMapper to T. This seems particularly nasty way of doing it as I have to cast T here and then I have to also cast the object type from the method which is calling it.</p>
  
  <p>I am using Roboguice in this project so it would be nice if I could change the type through injection and then annotate the object which the Generic type I need it to return. I read about <a href="http://google-guice.googlecode.com/git/javadoc/com/google/inject/TypeLiteral.html">TypeLiteral</a> and wondering if it could solve this problem?</p>