tengo una clase que deserializa un ArrayList de los genéricos con esta función tal y como se describe en la primera respuesta de este hilo: Java abstract class function generic Typeerror fundición TypeToken a tipo al deserializar con GSON
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, TypeToken.get(new ArrayList<T>().getClass()));
}
Eclipse me pide que echo TypeToken lo que resulta en esta (Sinde la función fromJson necesita un tipo, no un TypeToken)
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, (Type) TypeToken.get(new ArrayList<T>().getClass()));
}
Como resultado, me sale este error:
java.lang.ClassCastException: com.google.gson.reflect.TypeToken cannot be cast to java.lang.reflect.Type
Al gson user manual te dicen esta es la forma correcta de llamar a la función
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
Collection<Integer> ints2 = gson.fromJson(json, collectionType);
y no puedo ver lo que estoy haciendo mal (si se trata de una respuesta válida, ¿por qué estoy recibiendo este elenco ¿error?)
'new ArrayList() .getClass()' es exactamente lo mismo que 'ArrayList.class' –
newacct