栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么在Java中的“超级类型令牌”模式中需要匿名类

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么在Java中的“超级类型令牌”模式中需要匿名类

这个

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
其中实际类型实参为
TypeVariable
named
T
,这是源代码中出现的名称。


要回答您的问题,您不需要匿名类。您只需要一个子类,该子类声明要使用的类型参数。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号