Так в чем именно проблема? Чем тебе это не нравится?
У Джексона есть другие способы конструирования универсальных типов; так что, возможно, то, что вы ищете, это:
public List<T> listOf(String json, Class<T> elementType) {
ObjectMapper mapper = new ObjectMapper(); // should (re)use static instance for perf!
JavaType listType = mapper.getTypeFactory().constructCollectionType(ArrayList.class, elementType);
return mapper.readValue(json, listType);
}
TypeFactory
может использоваться для программного конструирования типов, использующих обобщенные типы - тип возвращаемого значения JavaType
, поскольку базовая Java Class
стирается по типу.
TypeFactory
фактически используется для преобразования TypeReference
в JavaType
и для внутреннего использования.
EDIT
Что касается обычных типов, не относящихся к Коллекции / Карте, это действительно довольно просто:
public T parseSingle(Class<T> cls, InputStream src) throws IOException {
return mapper.readValue(src, cls);
}
(вы также НЕ хотите читать содержимое как String - оно не только медленно, но и легко портит кодировки символов, поэтому, если возможно, введите InputStream
или byte[]
вместо)