【发布时间】:2012-07-14 06:21:44
【问题描述】:
我有一个类可以使用此函数反序列化泛型的 ArrayList,正如该线程的第一个答案中所述:Java abstract class function generic Type
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<T>().getClass()与ArrayList.class完全相同
标签: java eclipse generics casting gson