Google gson fromjson()TypeToken

JPG*_*JPG 3 java json gson

我不了解TypeTokenGoogle的GSONapi 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());
Run Code Online (Sandbox Code Playgroud)

这里到底发生了什么: new TypeToken<List<ID_Name_Address>>(){}.getType()

这是一个匿名班吗?对此代码进行一些说明。

Kis*_*kae 5

TypeToken 这是一个在运行时获取有关泛型信息的技巧,这是由于具有完全指定的泛型超类的类可以通过反射使这些数据可用。

GSON用户指南在此处提供了有关序列化/反序列化泛型的部分:https : //github.com/google/gson/blob/master/UserGuide.md#TOC-Serializing-and-Deserializing-Generic-Types

为了专门回答您的问题,它将创建一个匿名对象,该对象捕获TypeToken其超类数据中的泛型。然后通过反射提取该数据并将其打包为一个Type实例,getType()以避免由于上述匿名类而导致的内存泄漏。