最近,我正在使用谷歌的Gson学习JSON。我遇到了一个问题。这是代码:
Type type = new TypeToken<Collection<Data>>(){}.getType();
我无法理解{}
的真正含义。所以我阅读了源代码,并得到类描述:构造一个新类型的文字。从类型参数派生表示类...客户端创建一个空anonymous subclass
。 anonymous subclass
让我感到困惑?任何人都可以具体解释一下吗?
答案 0 :(得分:2)
{}
是匿名类的主体。
您拥有的完整定义是:
class MyTypeToken extends TypeToken<Collection<Data>> {
}
TypeToken<Collection<Data>> tcd = new MyTypeToken();
Type type = tcd.getType();
Java不是必须输入所有内容,而是允许您将其简化为:
Type type =
new TypeToken<Collection<Data>>() // this is the constructor
{
// in here you can override methods and add your own if you want
} // this ends the declaration of the class. At this point the class is created and initialized
.getType(); // This is method of the class and semicolon to end the expression
请注意,由于该类是匿名的,因此您必须在创建它的同时对其进行初始化。如果你试图在之后对其进行初始化,那就会失去它的匿名性
你也可以这样做:
TypeToken<Collection<Data>> tt = new TypeToken<Collection<Data>>(){};
Type type = tt.getType();