加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 带有extends和super作为参数的无界通配符

发布时间:2020-12-15 01:05:00 所属栏目:Java 来源:网络整理
导读:请帮我解释为什么我不能调用testSuper()方法?有编译错误: The method testSuper(Group 但testExtends()方法OK.但是,它看起来一样. class AClass 最佳答案 电话之间有区别. 在编译的调用中, instGrA.testExtends(instGrB); 你传递一个组 >一个期待一个组 >.

请帮我解释为什么我不能调用testSuper()方法?有编译错误:

The method testSuper(Group

但testExtends()方法OK.但是,它看起来一样.

class AClass
最佳答案
电话之间有区别.

在编译的调用中,

instGrA.testExtends(instGrB);

你传递一个组< BClass< String>>一个期待一个组<?的方法扩展AClass<?>>.匹配,因为BClass< String>是AClass<?>>的子类型. – BClass是AClass的子类,String是?的子类型.

但是,在不编译的调用中,

instGrB.testSuper(instGrA);

你传递一个组< AClass< String>>一个期待一个组<?的方法超级BClass<?>>.这是不匹配的,因为虽然AClass是BClass的超类,但AClass< String>不是BClass<?>的超类型.

testExtends和testSuper参数中的通配符应该归咎于此.因为您在实例中将AClass和BClass分配给T,所以可以使用它们.如果我们在Group中更改这些方法的声明以使用T,我可以编译它:

public void testExtends(Group

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读