我有一个方法,它使用gson反序列化自定义对象。该方法接受特定的类类型,以便它可以反序列化任何类型的对象。它看起来像这样:
public <T> T getMyCustomObject(String jsonString, class<T> classType) {
final Gson gson = new Gson();
T obj = gson.fromJson(jsonString, classType);
return obj;
}
现在,我想序列化一个来自DynamoDB的条目Map<String, AttributeValue>
我对该函数的方法调用如下:
Type typeOfHashMap = new TypeToken<Map<String, AttributeValue>>() { }.getType();
Map<String, AttributeValue> attributeValue = getMyCustomObject(jsonString, typeOfHashMap.getClass());
我的json字符串完全有效,但后来收到异常 -
java.lang.ClassCastException: com.google.gson.internal.$Gson$Types$ParameterizedTypeImpl cannot be cast to java.util.Map
我究竟做错了什么?我采用泛型类型并且Java类型擦除错误了吗?或者我应该不使用TypeToken?