通配符类型


通配符类型:就是允许类型参数变化的泛型。

其中,Pair(raw)为原始类型(即Pair),Pair<?>为泛型类型。Employee为父类,Manager为子类。

Pair<? extends Employee>表示任何泛型Pair类型,它的参数类型是Employee的子类,如Pair<Manager>.

Pair<? super Manager>表示Manager所有的超类型。如Pair<Employee>、Pair<Object>

Pair<? extends Employee>和Pair<? super Manager>都表示一个范围,通配符类型的灵活性就体现在这里。

Pai<?>和Pair在表示范围上都表示最大,但是在方法的调用上有所不同。

Pair<?>有如下方法:

? getFirst()

void setFirst()

getFirst()的返回值只能赋给一个Object。setFirst方法不能被调用,甚至不能用Object调用。Pair<?>和Pair本质的不同在于:可以用任意Object对象调用原始Pair类的setObject方法。



带有超类限定的通配符可以向泛型对象写入,带有子类型限定的通配符可以从泛型对象读取。



以下是来自牛客网的一道题目:

class A {}
class B extends A {}
class C extends A {}
class D extends B {}

Which four statements are true ?

链接:https://www.nowcoder.com/questionTerminal/9bc2d446173147b3b28b31568a6c4706
来源:牛客网

A.The type List<A>is assignable to List.
B.The type List<B>is assignable to List<A>.
C.The type List<Object>is assignable to List<?>.
D.The type List<D>is assignable to List<?extends B>.
E.The type List<?extends A>is assignable to List<A>.
F.The type List<Object>is assignable to any List reference.
G.The type List<?extends B>is assignable to List<?extends A>.


正确答案:A C D G


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值