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つの質問があります。
1つ目は、クラス型をメソッドに渡して、オブジェクトマッパーが逆シリアル化する必要のある型を認識できるようにすることです。ジェネリックを使用するより良い方法はありますか?
また、getメソッドでは、objectMapperから返されたオブジェクトをTにキャストしています。ここでTをキャストする必要があり、それを呼び出すメソッドからオブジェクトタイプもキャストする必要があるため、これは特に厄介な方法のようです。
このプロジェクトではRoboguiceを使用しているので、インジェクションによってタイプを変更してから、返す必要のあるジェネリックタイプのオブジェクトに注釈を付けることができれば便利です。TypeLiteralについて読んで、この問題を解決できるかどうか疑問に思っていますか?