开发者社区> 问答> 正文

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 2663 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
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载