但是你这样写,其实会遇到一个错误 ** Only classes are allowed on the left hand side of a class literal** 为什么会这样,因为泛型有类型擦除,泛型其实只是在编译的存在,运行的时候是不存在的,而反序列化需要再运行的时候获取到具体的类型,而类型却被擦除了,所以会报错,那么怎么办?
泛型怎么反序列化成对象?
看函数的参数类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
//这里要的是个class public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException { // 都转成到这里 T object = fromJson(json, TypeToken.get(classOfT)); return Primitives.wrap(classOfT).cast(object); }
// 其实需要的是一个TypeToken public <T> T fromJson(String json, TypeToken<T> typeOfT) throws JsonSyntaxException { if (json == null) { returnnull; } StringReader reader = new StringReader(json); return fromJson(reader, typeOfT); }