Java新手,请教个关于泛型类的问题。在Java中继承一个泛型类的时候,经常见到强制指定泛型类到底是什么,像是:class GenericSuperClass<T>{ //先定义一个泛型类; T t; public GenericSuperClass(T t) { this.t = t; }}class GenericSubClass extends GenericSuperClass<Number>{ //继承之前定义的GenericSuperClass并且要求T是Number}类似的操作很常见,可是我找来找去就是没找到关于这种写法的讨论或者文档。 这种写法貌似也不符合对有界类型参数的声明。。。所以说这种写法是哪来的呢?
1 回答

慕姐8265434
TA贡献1813条经验 获得超2个赞
当然来自Java语言规范:
8.1.4. Superclasses and Subclasses
Super:
extends ClassType
ClassType:
TypeDeclSpecifier TypeArgumentsopt
其中的TypeDeclSpecifier是指父类型,见4.3章节:
TypeDeclSpecifier:
TypeName
ClassOrInterfaceType . Identifier
TypeName:
Identifier
TypeName . Identifier
关键是后面的可选的TypeArguments,见4.5.1章节:
TypeArguments:
< TypeArgumentList >
TypeArgumentList:
TypeArgument
TypeArgumentList , TypeArgument
TypeArgument:
ReferenceType
Wildcard
倒数第二个ReferenceType包括类、接口、数组等,当然Number也是合法的。
添加回答
举报
0/150
提交
取消