我有一個反序列化泛型的ArrayList,也是同樣在這個線程的第一個答案描述這個函數的類:Java abstract class function generic Type錯誤鑄造TypeToken與GSON反序列化時,鍵入
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, TypeToken.get(new ArrayList<T>().getClass()));
}
Eclipse詢問我投TypeToken造成這種(sinde功能fromJson需要一個類型,而不是一個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 user manual他們會告訴你這是在調用該函數
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
Collection<Integer> ints2 = gson.fromJson(json, collectionType);
的正確方法,我看不出有什麼我做錯了(如果它是一個有效的答案,爲什麼我得到這個投錯誤?)
'new ArrayList().getClass()'與'ArrayList.class'完全一樣, –
newacct
2012-07-15 00:49:39