Я пытаюсь создать общий класс для использования с 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);
}