Я пытаюсь создать универсальный класс для использования с Google Gson . Я создал класс GsonJsonConverterImplementation
. Этот класс имеет следующий метод:
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?
Edit
Используя Ответ Криса , я бы предположил, что это должно работать. К сожалению, clazz нельзя использовать таким образом и вызывает ошибку компилятора. Каковы мои варианты работы с коллекцией и универсальным типом с Gson?
public List deserializeList(String jsonString, Class clazz) {
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("MM/dd/yy HH:mm:ss");
Gson gson = builder.create();
Type listType = new TypeToken(){}.getType(); // compiler error
return gson.fromJson(jsonString, listType);
}