Используя общий тип с Gson

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

26
задан Community 23 May 2017 в 11:46
поделиться