Java 通用通配符列表<?扩展 Animal> 动物 = new ArrayList<>()

标签 java generics wildcard

我对 Java 通用通配符有疑问

为什么这段代码不起作用?

如果 B 扩展 A,

“? extends A”表示“?”允许 A 和 B
“? supers B”表示“?”允许B和A。

我错了吗?

enter image description here

最佳答案

这是因为据说 list 包含某种扩展 Animal 的类型 X。请注意,它不是任何动物性的东西,而是某种东西,而是一种动物性的东西。因此您可以确定列表中只有 X 种动物的实例。由于您不知道 X 是什么,因此您无法将任何动物添加到列表中,因为它可能不是 X。

关于Java 通用通配符列表<?扩展 Animal> 动物 = new ArrayList<>(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52243115/

相关文章:

Java 同时播放多个 Clip

c# - 当类是通用的时找不到 Web API Controller

linux - 从跨目录的对象构建 .ko 时在 Makefile 中使用通配符的问题

php - 当某些输入参数使用值 'all' 作为通配符时,如何编写 PHP 代码(使用准备好的语句)从 MySQL DB 返回行?

java - 无法使用带有 % 或 * 的 LIKE 搜索 MS Access 数据库

java - 在 windows 和 linux 中转换字符集

java - 使用索引在 arraylist 的 arraylist 中添加元素

java - RxJava 反跳操作符取决于消息

c# - IKVM.net 不支持泛型(类型参数)吗?

c# - 泛型:何时使用 new() 作为类型参数的约束?