美文网首页
编程泛型中的协变与逆变

编程泛型中的协变与逆变

作者: areece | 来源:发表于2019-12-27 15:01 被阅读0次

    泛型与型变

    在强类型语言中,即使是使用泛型,我们也会希望能够对类型做一些限制,这些限制的一类称为型变。它回答的问题包括了两个方面:

    • 给我一个对象,这个对象必须是某种类型(当然子类型也是可以的,这可不就是面向对象编程的最基本的要求么),这是对生产者的要求;【协变】
    • 给你一个对象,你能不能吃得下。这是对消费者的要求【逆变】

    协变

    协变的意义在于如果我能够处理基类,你【生产者】给我一个子类对象,我也能够处理,我只是把它当作基类对象处理了。

    逆变

    逆变的意义在于我要求你能够处理某种类型,但是显然,我并不会要求你能够处理子类型,因为子类型可能会有无穷多,你【消费者】可能处理不了,但是如果你能够处理基类,最多你把我给你的对象当作基类对象处理就行了。也就是说对消费者的要求是:能够处理某种类型,或者它的基类(随便哪一层就可以)。

    相关文章

      网友评论

          本文标题:编程泛型中的协变与逆变

          本文链接:https://www.haomeiwen.com/subject/leddoctx.html