Java中泛型类的继承-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java中泛型类的继承

在Java中继承一个泛型类的时候,经常见到强制指定泛型类到底是什么,像是:

class GenericSuperClass<T>
{
    //先定义一个泛型类;
    
    T t;
    public GenericSuperClass(T t)
    {
        this.t = t;
    }
}

class GenericSubClass extends GenericSuperClass<Number>
{
    //继承之前定义的GenericSuperClass并且要求T是Number
}

类似的操作很常见,可是我找来找去就是没找到关于这种写法的讨论或者文档。 这种写法貌似也不符合对有界类型参数的声明。所以说这种写法是哪来的呢?

展开
收起
蛮大人123 2016-03-11 19:12:24 2533 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    来自Java语言规范:

    Super:
        extends ClassType
    
    ClassType:
        TypeDeclSpecifier TypeArgumentsopt

    其中的TypeDeclSpecifier是指父类型

    TypeDeclSpecifier:
        TypeName  
        ClassOrInterfaceType . Identifier
    
    TypeName:
        Identifier
        TypeName . Identifier

    关键是后面的可选的TypeArguments:

    TypeArguments:
        < TypeArgumentList >
    
    TypeArgumentList: 
        TypeArgument
        TypeArgumentList , TypeArgument
    
    TypeArgument:
        ReferenceType
        Wildcard

    倒数第二个ReferenceType包括类、接口、数组等,当然Number也是合法的。

    2019-07-17 18:59:56
    赞同 展开评论 打赏
问答排行榜
最热
最新
相关电子书
更多
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载
Java单元测试实战
立即下载