Когда я использую Gson для разбора между объектом и json, инициализация TypeToken настолько странная:
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
Я просто знаю такой формат: new TypeToken<Collection<Integer>>().getType();
, что для фигурных скобок выше? Спасибо заранее!
PS Я изучил исходный код класса TypeToken
, это class
(не интерфейс или абстрактный) и без какого-либо конструктора, что означает, что он использует no-parameter constructor
как по умолчанию.
P.S.2 Когда я удаляю фигурные скобки, он говорит мне, что конструктор не виден. Когда я смотрел внутри класса TypeToken, это конструктор:
protected TypeToken() {
this.type = getSuperclassTypeParameter(getClass());
this.rawType = (Class<? super T>) $Gson$Types.getRawType(type);
this.hashCode = type.hashCode();
}
Почему он просто не использует public
?