这个
ReferenceType<List<Integer>> referenceType = new ReferenceType<List<Integer>>(){相当于
public class AnonymousReferenceType extends ReferenceType<List<Integer>> {}...ReferenceType<List<Integer>> referenceType = new AnonymousReferenceType();该骇客围绕
Class#getGenericSuperclass()哪些州工作
返回
Type表示此Class表示的实体的直接超类(类,接口,原始类型或void)。 如果超类是 参数化类型
,则Type返回的对象 必须准确反映源代码中使用的实际类型参数
。如果以前没有创建过代表超级类的参数化类型,则会创建该参数化类型。有关ParameterizedType参数化类型的创建过程的语义,请参见的声明
。如果这Class表示Object类,接口,原始类型或void,则null返回。如果此对象表示数组类,则返回Class表示Object该类的对象。
换句话说,的超类
AnonymousReferenceType是
ParameterizedType代表
ReferenceType<List<Integer>>。它
ParameterizedType有一个实际的类型实参,即
List<Integer>源代码中出现的那个。
在您的第二个示例中, 与您的第一个 示例 不同 ,
class ReferenceType<T>{}class ReferenceTypeSub<T> extends ReferenceType<T>{}的父类(父类)
ReferenceTypeSub是
ReferenceType<T>,
ParameterizedType其中实际类型实参为
TypeVariablenamed
T,这是源代码中出现的名称。
要回答您的问题,您不需要匿名类。您只需要一个子类,该子类声明要使用的类型参数。



