作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
请帮我解决这个问题:
如果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
的所有通用类型参数,通配符和非通配符)。在你的情况下 T
是Cage<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/
我是一名优秀的程序员,十分优秀!