У меня есть класс, который десериализует 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);
. и я не вижу, что я делаю неправильно (, если это правильный ответ, почему я получаю эту ошибку приведения?)