gpt4 book ai didi

具有有界通配符的泛型类型的 Java 泛型集合

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:25 24 4
gpt4 key购买 nike

请帮我解决这个问题:

如果Lion IS-A Animal并给出 Cage<T> :

Cage<? extends Animal> c = new Cage<Lion>(); // ok,

但是

Set<Cage<? extends Animal>> cc = new HashSet<Cage<Lion>>(); // not ok

我在这里没有看到什么?

最佳答案

当分配给具有非通配符泛型类型的变量 ( Set<T>) 时 T , 被分配的对象必须恰好有 T作为其通用类型(包括 T 的所有通用类型参数,通配符和非通配符)。在你的情况下 TCage<Lion> ,与 Cage<? extends Animal> 不同类型.

你能做什么,因为Cage<Lion>可分配给 Cage<? extends Animal> , 是使用通配符类型:

Set<? extends Cage<? extends Animal>> a = new Set<Cage<Lion>>();

关于具有有界通配符的泛型类型的 Java 泛型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2876595/

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