当我使用 Gson 在 object 和 json 之间进行解析时,TypeToken 的初始化非常奇怪:
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
我只知道这种格式:new TypeToken<Collection<Integer>>().getType();
,上面的大括号是干什么用的?提前致谢!
PS我查看了TypeToken
类的源代码,它是一个class
(不是接口或抽象)并且没有任何构造函数,这意味着它no-parameter constructor
用作默认值。
PS2当我删除大括号时,它告诉我构造函数不可见。当我查看 TypeToken 类时,这是构造函数:
protected TypeToken() {
this.type = getSuperclassTypeParameter(getClass());
this.rawType = (Class<? super T>) $Gson$Types.getRawType(type);
this.hashCode = type.hashCode();
}
为什么不直接使用public
呢?