在Gson中,"{}.getType()"语法是什么意思?

4
在 Gson 文档中,我遇到了这个用于将 JSON 序列化的 Spotify 艺术家对象列表转换回对象 ArrayList 的结构。我在 onRestoreInstanceState() 中使用它。但是,我从未见过声明后面跟 {}。有人能向我解释一下它的含义吗?我知道 getType() 是一个成员类,但为什么要使用 {}?
 Type type = new TypeToken<List<Artist>>() {}.getType();
 mArtistsList = new Gson().fromJson(jsonSearchResults, type);

请查看官方文档中的此示例 - Salem Ouerdani
1个回答

5

{} 表示一个不重写任何方法的匿名类。这里有另一个你之前见过的匿名类:

Runnable r = new Runnable() {
   @Override
   public void run() {
   }
};
.getType() 返回一个 java.lang.reflect.Type,Gson 使用它来识别要用于序列化和反序列化您的 Object / JSON StringTypeAdapter。请参见我的回答以获取有关 Gson 如何使用此功能来推断泛型类型参数的更多信息;简而言之,它需要使用匿名类,否则将无法正常工作。

嘿,谢谢!另一个问题对我来说似乎与我刚刚提出的问题没有直接关系,也不像我的问题那样简洁。所以,谢谢。 - Kazinsky
@Kazinsky,另外,是的,你问题的答案被深深地埋在那个更长的答案中了,但它们之间只有微小的不同之处,所以我还是决定回答这个问题。 - durron597

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,