我有一个类,它使用此函数反序列化泛型的 ArrayList,正如该线程的第一个答案中所述:Java 抽象类函数泛型类型
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 用户手册中,他们告诉您这是调用该函数的正确方法
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
Collection<Integer> ints2 = gson.fromJson(json, collectionType);
而且我看不出我做错了什么(如果这是一个有效的答案,为什么我会收到这个演员错误?)