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

时间:2018-09-09 09:26:14

标签: java generics wildcard

我对Java通用通配符有疑问

为什么此代码不起作用?

如果B延伸到A,

“?扩展A”表示“?”允许使用A和B。
“?supers B”表示“?”允许B和A。

我错了吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

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