java – 带有extends和super作为参数的无界通配符
发布时间:2020-12-15 01:05:00 所属栏目:Java 来源:网络整理
导读:请帮我解释为什么我不能调用testSuper()方法?有编译错误: The method testSuper(Group 但testExtends()方法OK.但是,它看起来一样. class AClass 最佳答案 电话之间有区别. 在编译的调用中, instGrA.testExtends(instGrB); 你传递一个组 >一个期待一个组 >.
请帮我解释为什么我不能调用testSuper()方法?有编译错误:
最佳答案
电话之间有区别.
在编译的调用中,
你传递一个组< BClass< String>>一个期待一个组<?的方法扩展AClass<?>>.匹配,因为BClass< String>是AClass<?>>的子类型. – BClass是AClass的子类,String是?的子类型. 但是,在不编译的调用中,
你传递一个组< AClass< String>>一个期待一个组<?的方法超级BClass<?>>.这是不匹配的,因为虽然AClass是BClass的超类,但AClass< String>不是BClass<?>的超类型. testExtends和testSuper参数中的通配符应该归咎于此.因为您在实例中将AClass和BClass分配给T,所以可以使用它们.如果我们在Group中更改这些方法的声明以使用T,我可以编译它:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |