java里面关于泛型限定的一个问题 20

 我来答
温文尔雅还清亮灬哈士奇e
2017-08-29 · TA获得超过128个赞
知道答主
回答量:351
采纳率:0%
帮助的人:119万
展开全部
先不说语法的事情,感觉题主这样用就不是很合乎多态的意义。如果在基类中定义了getName方法,则可以期望其子类中都含有getName方法。这是多态的用意所在,而且用<? extends Ren>表达“Ren类的子类”这一概念也非常自然。但是反过来就很别扭了。即便XueSheng类中含有getName方法,也可能只是它独有的;不能直接说明其所有祖先类<? super XueSheng>中都含有getName方法,因此语法不对。Oracle的上的教程中是这么举例子的:<pre t="code" l="java">public static void addNumbers(List<? super Integer> list) {
for (int i = 1; i <= 10; i++) {
list.add(i);
}
}你看人家这个例子就比较舒服。add方法是List结构定义的,不管List里面元素类型是什么。而add方法的参数是Object,包括Integer在内的任何祖先类都是Object类的子类,所以这也合乎逻辑。而人家这样用<? super Integer>的好处就是允许用户使用多态,即便用户用Object类型引用一个Integer,也可以带入这个函数中。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式