Java新手,请教个关于泛型类的问题。
在Java中继承一个泛型类的时候,经常见到强制指定泛型类到底是什么,像是:
class GenericSuperClass<T>
{
//先定义一个泛型类;
T t;
public GenericSuperClass(T t)
{
this.t = t;
}
}
class GenericSubClass extends GenericSuperClass<Number>
{
//继承之前定义的GenericSuperClass并且要求T是Number
}
类似的操作很常见,可是我找来找去就是没找到关于这种写法的讨论或者文档。 这种写法貌似也不符合对有界类型参数的声明。。。所以说这种写法是哪来的呢?
当然来自Java语言规范:
8.1.4. Superclasses and Subclasses
其中的
TypeDeclSpecifier
是指父类型,见4.3章节:关键是后面的可选的
TypeArguments
,见4.5.1章节:倒数第二个
ReferenceType
包括类、接口、数组等,当然Number
也是合法的。