Ошибка преобразования TypeToken в Type при десериализации с помощью gson

У меня есть класс, который десериализует ArrayList дженериков с помощью этой функции, как описано в первом ответе этой темы :. Общий тип функции абстрактного класса Java

public <T> ArrayList<T> arrayType(String data){
    return g.fromJson(data,   TypeToken.get(new ArrayList<T>().getClass()));
}

Eclipse просит меня привести TypeToken, в результате чего (функция fromJson нуждается в Type, а не в TypeToken)

public <T> ArrayList<T> arrayType(String data){
    return g.fromJson(data,  (Type) TypeToken.get(new ArrayList<T>().getClass()));
}

В результате я получаю эту ошибку:

java.lang.ClassCastException: com.google.gson.reflect.TypeToken cannot be cast to java.lang.reflect.Type

В руководстве пользователя gson говорится, что это правильный способ вызова функции

Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
Collection<Integer> ints2 = gson.fromJson(json, collectionType);

. и я не вижу, что я делаю неправильно (, если это правильный ответ, почему я получаю эту ошибку приведения?)

7
задан Community 23 May 2017 в 12:25
поделиться