编程泛型中的协变与逆变

2019-12-27  本文已影响0人  areece

泛型与型变

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

协变

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

逆变

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

上一篇 下一篇

猜你喜欢

热点阅读