gpt4 book ai didi

Java - 是否存在协变和逆变?

转载 作者:行者123 更新时间:2023-11-29 09:32:26 25 4
gpt4 key购买 nike

前几天,当涉及到泛型和协变/逆变时,我有点困惑。我知道 C# 指定协变/逆变类型参数,但在 Java 中真的有类似的概念吗?

我知道你可以声明:

List<? extends String> l = ...
List<? super String> l2 =...

现在我可以获取 MyString 的列表,不允许添加方法等,而 l2 可以采用 List<Object>并向其添加字符串,但无法获取任何元素,如此处所述 Covariance- contravariance in Java .然而,这只是简单地声明一个带有接受子类型/父类(super class)型的类型参数的列表,而不是像这样进行“适当的”协变:

Iterable<Animal> a = new Iterable<Dog>();

是我感到困惑还是 Java 根本不支持正确的协方差定义?谢谢。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com