【问题标题】:What does the {}.getType() syntax mean in Gson? [duplicate]Gson 中的 {}.getType() 语法是什么意思? [复制]
【发布时间】:2015-08-04 03:15:54
【问题描述】:

在 Gson 文档中,我遇到了这个构造,用于将 JSON 化的 Spotify Artist 对象列表转换回对象的 ArrayList。我在 onRestoreInstanceState() 中使用它。

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

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

【问题讨论】:

标签: java json gson


【解决方案1】:

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

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

.getType() 返回一个java.lang.reflect.Type,Gson 使用它来识别它将使用哪个TypeAdapter 来序列化和反序列化您的Object / JSON String

请参阅my answer here for more information,了解 Gson 如何使用它来推断泛型类型参数;简短的版本是它需要使用匿名类,否则它将无法工作。

【讨论】:

  • 嘿,谢谢!另一个问题在我看来并不直接相关,也不像我刚才问的那样简洁。所以,谢谢。
  • @Kazinsky 另外,是的,你的问题的答案隐藏在另一个更长的答案中,但它们几乎没有什么不同,我还是决定回答这个问题。
猜你喜欢
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 2014-11-07
  • 2016-07-21
  • 2014-02-25
  • 2013-06-17
  • 2011-10-27
  • 1970-01-01
相关资源
最近更新 更多