在Gson文档中,我遇到了这个构造,用于将JSONified Spotify Artist对象列表转换回对象的ArrayList。我在onRestoreInstanceState()中使用它。
但是,我在声明之后从未见过{}。有人可以向我解释这是什么意思吗?我知道getType()是一个成员类,但为什么{}?
Type type = new TypeToken<List<Artist>>() {}.getType();
mArtistsList = new Gson().fromJson(jsonSearchResults, type);
答案 0 :(得分:4)
{}
表示anonymous class并不覆盖任何方法。这是您之前见过的另一个匿名课程:
Runnable r = new Runnable() {
@Override
public void run() {
}
};
.getType()
会返回java.lang.reflect.Type
,Gson会使用该my answer here for more information来确定将TypeAdapter
用于序列化和反序列化Object
/ JSON {{1} }。
请参阅https://www.youtube.com/watch?v=ptK9-CNms98,了解Gson如何使用它来推断泛型类型参数;短版本是它需要使用匿名类,否则它将不起作用。