A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wodeairenw 中级黑马   /  2013-5-1 22:12  /  993 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

泛型限定:
上限:?extends E:可以接收E类型或者E的子类型对象。
下限:?super E:可以接收E类型或者E的父类型对象。
在实际应用中,到底如何使用,注意什么?
能给点代码例子最好。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

1 个回复

倒序浏览
在泛型中super说明:<? super T> ?代表一种"特定"的类型,且此类型是T类型的父类或T类型,也就是说T是?(这种特定类型而其中比较难理解的是在添加对象时,为什么添加的又是T类型的子类呢?这点仔细想想确实应该是这样,<? super T>这样声明的泛型,是T类型的父类型或T类型的一个泛型,而编译器并不是相当的聪明并不知道这个?代表的确切类型(因为Java中的泛型机制是擦除原则),因此为了确保添加的对象一定是合法的,添加的元素必须是T类型或是T类型的子类。
在泛型中extends的说明:<? extends T> ?表示一种特定的类型,且是T类型的一种"特定"的子类,也就是说T是?(特定类同样其中比较难理解的是,添加对象,为什么任何类型的对象都无法添加进去泛型呢?,想想如果前面的理解好了,这也不难理解,?是T类型或是其子类,而T类型的子类可能不唯一,编译器又不知道?确切的代表什么类型(只是知道是一种特定的类型,但不确定这种特定的类型是哪种类型)因为T类型的子类型不唯一,所以这种特定的类型编译器又不知道是哪种特定的类型,因此任何类型都无法添加进去。   

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马