ho una classe che deserializza un ArrayList di farmaci generici con questa funzione proprio come descritto nella prima risposta di questa discussione: Java abstract class function generic TypeErrore colata TypeToken al tipo quando la deserializzazione con GSON
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, TypeToken.get(new ArrayList<T>().getClass()));
}
Eclipse mi chiede di esprimere TypeToken con conseguente questo (Sindhi la funzione fromJson ha bisogno di un tipo, non un TypeToken)
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, (Type) TypeToken.get(new ArrayList<T>().getClass()));
}
Come risultato ottengo questo errore:
java.lang.ClassCastException: com.google.gson.reflect.TypeToken cannot be cast to java.lang.reflect.Type
Al gson user manual ti dicono questo è il modo corretto di chiamare la funzione
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
Collection<Integer> ints2 = gson.fromJson(json, collectionType);
e non riesco a vedere quello che sto facendo di sbagliato (se si tratta di una risposta valida, perché mi appare questo cast errore?)
'new ArrayList() .getClass()' è esattamente lo stesso di 'ArrayList.class' –
newacct