Java-Typ Generische als Argument für GSON

In GSON, um eine Liste von Objekten, die Sie tun

Gson gson = new Gson();
Type token = new TypeToken<List<MyType>>(){}.getType();
return gson.fromJson(json, token);

Funktioniert es Super, aber ich möchte noch weiter gehen und haben gleichen Typ eingestellt, so kann ich haben eine gemeinsame Funktion zu analysieren, Liste der Objekte, die mit diesem code

//the common function 
public <T> List<T> fromJSonList(String json, Class<T> type) {
  Gson gson = new Gson();
  Type collectionType = new TypeToken<List<T>>(){}.getType();
  return gson.fromJson(json, collectionType);
}

//the call
List<MyType> myTypes = parser.fromJSonList(jsonString, MyType.class);

Leider gibt ein array von StringMaps, nicht der Typ. T wird interpretiert als ein anderer generischer Typ, nicht mein Typ. Abhilfe ?

Vielleicht sind diese links hilfreich: stackoverflow.com/questions/75175/... stackoverflow.com/questions/356583/... velocityreviews.com/forums/... tutorials.jenkov.com/java-reflection/generics.html In der zweiten Verbindung, die Sie vorschlagen, eine factory-Methode. Hmm... ich bin mir nicht sicher, ob die Verwendung ? statt T könnte das problem lösen.

InformationsquelleAutor Rodrigo Asensio | 2013-01-03

Schreibe einen Kommentar