Java:使用时,列表的通用类型参数是协变还是协变?

时间:2019-05-15 07:31:30

标签: java generics lambda covariance contravariance

我对协方差和相反性有些困惑。我们是否说过在Java中使用? super X时通常是矛盾的。

现在读我的书,我了解以下概念:

这是反变的:

method(Predicate<? super X> pred)

但是这是协变的:

method(List<? super X> list)  //And then we use add for a list of course

这个概念没有明确地写成我要问你的方式,所以我想知道,这个定义正确吗?如果是,那么如果第一个是协变的,为什么最后一个是协变的,为什么两者都使用super呢?

0 个答案:

没有答案