java超类及子类通配符

转载自https://www.oschina.net/question/2847805_2196069中大止刀口的答案

 

java 的 通配 ? super和? extends实际上是对叫括号内要代表的类型的限定,用于类型推导

不能简单的认为把类型代入?后成立就可以,而是要类型推导符合才行。

Java泛型这样的设计就造成了需要具体场景下的类型分析推导才能分辨是否可行,这就很不直观

这里主要说下 返回类型和参数类型。

void method(? super C);//参数是C的超类,只要是C的子类传进来都能确认没问题。

void method(? extends C);//参数是C的子类,不能确定C的子类究竟是哪一个,传什么都不对。

? super C method();//返回值是C的超类,不能确定C的超类是具体哪一个,只能确定是Object。

? extends C method();//返回值是C的子类,至少可以确定类型是C及其父类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值