我无法理解Google TypeToken
api GSON
方法的fromJson
。下面的代码对我来说非常复杂......
Gson gson = new Gson();
ArrayList<ID_Name_Address> al = new ArrayList<ID_Name_Address>();
al = gson.fromJson(json, new TypeToken<List<ID_Name_Address>>(){}.getType());
这里到底发生了什么:new TypeToken<List<ID_Name_Address>>(){}.getType()
这是一个匿名课吗?对这段代码有所了解。
答案 0 :(得分:3)
TypeToken
是一个在运行时获取有关泛型的信息的技巧,这要归功于具有完全指定的泛型超类的类通过反射使这些数据可用。
GSON用户指南中有一节关于序列化/反序列化泛型:https://github.com/google/gson/blob/master/UserGuide.md#TOC-Serializing-and-Deserializing-Generic-Types
要专门回答您的问题,它会创建一个匿名对象,在其超类数据中捕获TypeToken
的泛型。然后通过泛型提取该数据,并将其打包为Type
实例和getType()
,以避免因上述匿名类导致的内存泄漏。