{}.getType() 语法在 Gson 中意味着什么?

What does the {}.getType() syntax mean in Gson?

在 Gson 文档中,我 运行 跨过此构造以用于将 JSONified Spotify Artist 对象列表转换回对象的 ArrayList。我在 onRestoreInstanceState() 中使用它。

但是,我从未见过声明后的 {}。有人可以向我解释这是什么意思吗?我知道 getType() 是成员 class 但为什么是 {}?

 Type type = new TypeToken<List<Artist>>() {}.getType();
 mArtistsList = new Gson().fromJson(jsonSearchResults, type);

{} 表示 anonymous class 不覆盖任何方法。这是您之前见过的另一个匿名 class:

Runnable r = new Runnable() {
   @Override
   public void run() {
   }
};

.getType() returns a java.lang.reflect.Type Gson 用来识别哪个 TypeAdapter 它将用于序列化和反序列化你的 Object / JSON String.

请参阅 了解 Gson 如何使用它来推断泛型类型参数;简短的版本是它需要使用匿名 class 否则它不会工作。