Почему анонимный класс требуется в шаблоне «super type token» в java

В паттерне «Супер тип токена» Нила Гафтера (http://gafter.blogspot.com/2006/12/super-type-tokens.html), анонимный объект был использован для передачи параметризованного типа:

class ReferenceType<T>{}

/* anonymous subclass of "ReferenceType" */
ReferenceType<List<Integer>> referenceType = new ReferenceType<List<Integer>>(){

};
Type superClass = b.getClass().getGenericSuperclass();
System.out.println("super type : " + superClass);
Type genericType = ((ParameterizedType)superClass).getActualTypeArguments()[0];
System.out.println("actual parameterized type : " + genericType);

Тогда результат:

super type : com.superluli.test.ReferenceType<java.util.List<java.lang.Integer>>
actual parameterized type : java.util.List<java.lang.Integer>

Мой вопрос заключается в том, что магия делает анонимный объект "referenceType", чтобы заставить его работать? Если я определю явный подкласс «ReferenceType» и использую его вместо анонимного стиля, это не так, как ожидалось.

class ReferenceType<T>{}
class ReferenceTypeSub<T> extends ReferenceType<T>{}

/* explicitly(or, named) defined subclass of "ReferenceType" */
ReferenceType<List<Integer>> b = new ReferenceTypeSub<List<Integer>>();
Type superClass = b.getClass().getGenericSuperclass();
System.out.println("super type : " + superClass);
Type genericType = ((ParameterizedType)superClass).getActualTypeArguments()[0];
System.out.println("actual parameterized type : " + genericType);

Результат:

super type : com.superluli.test.ReferenceType<T>
actual parameterized type : T

Ответы на вопрос(1)

Ваш ответ на вопрос