Я пытаюсь создать универсальный класс для использования с Google Gson . Я создал класс GsonJsonConverterImplementation<T>
. Этот класс имеет следующий метод:
public T deserialize(String jsonString) {
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("MM/dd/yy HH:mm:ss");
Gson gson = builder.create();
return gson.fromJson(jsonString, T); // T.class etc. what goes here
}
Цель состоит в том, чтобы этот метод мог работать с любым типом, с которым я настроил работу моего GsonJsonConverterImplementation. К сожалению, gson.fromJson(jsonString, T)
не работает и не использует T.class
вместо T. Я уверен, что проблема связана с моим отсутствием понимания универсальных типов Java. Как правильно использовать дженерик с Gson?
Редактировать
Используя ответ Криса Я бы предположил, что это должно сработать. К сожалению, clazz не может использоваться таким образом и вызывает ошибку компилятора. Каковы мои варианты работы с коллекцией и универсальным типом с Gson?
public List<T> deserializeList(String jsonString, Class<T> clazz) {
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("MM/dd/yy HH:mm:ss");
Gson gson = builder.create();
Type listType = new TypeToken<clazz>(){}.getType(); // compiler error
return gson.fromJson(jsonString, listType);
}