У меня есть этот код:как конвертировать дженерики в класс <T>?
public class JsonFileHandler<T> {
public T getContent(File file) {
T t = null;
ObjectMapper mapper = new ObjectMapper();
if (!file.exists()) {
return null;
} else try {
t = mapper.readValue(file, T.class);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return t;
}
}
, но я получаю ошибку компиляции на этой линии:
t = mapper.readValue(file, T.class);
который имеет эту подпись:
public <T> T readValue(File src, Class<T> valueType)
, как я могу это исправить?
Фактически вы можете (хотя и не очень надежно) использовать TypeToken от Guava, см. Https://code.google.com/p/guava-libraries/wiki/ReflectionExplained#TypeToken – llogiq