第六节:协变和逆变

栏目:Java基础 作者:admin 日期:2016-08-25 评论:2 点击: 2,984 次

协变和逆变指的是宽类型和窄类型在某种情况下的替换或交换的特性。简单的说,协变就是用一个窄类型替代宽类型,而逆变则用宽类型覆盖窄类型。

1 协变

在Java中协变的例子非常常见,例如,面向对象的多态,以及数组的协变特性,下面看一下协变的例子:

而在泛型是不支持协变的,看下面的代码:

虽然泛型不支持协变的,但是可以通过通配符进行模拟:

注意:? extends Object的含义是:运行Object的子类,也包括Object,作为泛型参数。

2 逆变

在Java中不允许将父类变量赋值给子类变量。泛型自然也不支持逆变。但是在泛型中可以通过通配符进行模拟,如下例子:

声明: 本文由金丝燕网原创编译,转载请保留链接: 第六节:协变和逆变,更多交流请加群:278721352

第六节:协变和逆变:目前有2 条留言

  1. 板凳
    彩色熊猫:

    如果文章能分分类就更好了,现在这样有点乱

    2016-12-02 下午1:37 [回复]
  2. 沙发
    小小大白菜:

    写的非常易懂~ 坐等后面几节的更新~

    2016-09-24 下午1:30 [回复]

发表评论