背景
开发过程中,我们为了减少错误发生,会将很多异常数据返回默认值,如Gson反序列化,我们加工后 ,即使传入空json和Type,其fromJson的返回均能返回默认值。但是维护的基础库发生异常。java.lang.ClassCastException: com.google.gson.internal. G s o n Gson GsonTypes$ParameterizedTypeI cannot be cast to java.lang.Class。因使用了((Class<?>) type).newInstance()获取默认值, 将所有类型type强转为class导致错误。
Object obj = gson.fromJson(json, type);
return null == obj ? (T) ((Class<?>) type).newInstance() : (T) obj ;// 强转类型错误
原理
- Object:
Object 是一个类。 每个类都继承自 Object,所有对象(包括数组)都实现了这个类的方法。
- Class:
Class 是一个类(不是class)。该类没有