java 实现协方差_在Java中展示协方差和逆变?

慕斯卡3215842

协方差:class Super {

  Object getSomething(){}}class Sub extends Super {

  String getSomething() {}}Sub#getSomething是协变的,因为它返回Super#getSomething的返回类型的子类(但是满足Super.getSomething()的合同)逆变class Super{

  void doSomething(String parameter)}class Sub extends Super{

  void doSomething(Object parameter)}Sub#doSomething是逆变的,因为它需要Super#doSomething参数的超类参数(但是,再次填写Super#doSomething的合约)注意:此示例在Java中不起作用。Java编译器会重载并且不会覆盖doSomething() - Method。其他语言确实支持这种逆转方式。泛型这也适用于泛型:List aList...List extends Object> covariantList = aList;List super String> contravariantList = aList;您现在可以访问covariantList不带泛型参数的所有方法(因为它必须是“extends Object”),但getter将正常工作(因为返回的对象将始终为“Object”类型)反之亦然contravariantList:您可以使用泛型参数访问所有方法(您知道它必须是“String”的超类,因此您始终可以传递一个)但没有getter(返回的类型可以是String的任何其他类型) )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值