Tôi có một lớp học mà deserializes một ArrayList Generics với chức năng này cũng giống như mô tả trong câu trả lời đầu tiên của chủ đề này: Java abstract class function generic TypeLỗi đúc TypeToken Ký tự gõ vào khi deserializing với gson
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, TypeToken.get(new ArrayList<T>().getClass()));
}
Eclipse hỏi tôi để cast TypeToken kết quả này (Sinde chức năng fromJson cần một loại, không phải là một TypeToken)
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, (Type) TypeToken.get(new ArrayList<T>().getClass()));
}
kết quả tôi nhận được lỗi này:
java.lang.ClassCastException: com.google.gson.reflect.TypeToken cannot be cast to java.lang.reflect.Type
Tại gson user manual họ cho bạn biết đây là cách đúng đắn về gọi hàm
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
Collection<Integer> ints2 = gson.fromJson(json, collectionType);
và tôi không thể nhìn thấy những gì tôi làm sai (nếu nó là một câu trả lời hợp lệ, tại sao tôi nhận dàn diễn viên này lỗi?)
'new ArrayList() .getClass()' giống hệt với hàm 'ArrayList.class' –
newacct