Java中泛型类的继承
怪我咯
怪我咯 2017-04-17 17:32:30
[Java讨论组]

Java新手,请教个关于泛型类的问题。
在Java中继承一个泛型类的时候,经常见到强制指定泛型类到底是什么,像是:

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

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

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
高洛峰

当然来自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也是合法的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号