Wildcards and Subtyping - Oracle Documentation
This document has a diagram shows the relationships between several List classes declared with both upper and lower bounded wildcards. The relationship as depicted in the picture below:
在右侧层次结构中,List<? super Number>
是 List<? super Integer>
的子类型.是不是很困惑?
据我解释,List<? super Number>
可以用任何 List<type>
表示其中 type
是 Number
或 Number
的父类(super class).同样的逻辑适用于 List<? super Integer>
还。那么如何才能List<? super Number>
是 List<? super Integer>
的子类型?
最佳答案
这是因为List<? super Number>
只能容纳Number
及其父类(super class),同时 List<? super Integer>
可以容纳相同的+整数。
您可以这样想:如果项目类型限制更多,那么此类项目的列表在继承层次结构中较低。你可以放一个List<? super Number>
在 List<? super Integer>
类型的变量中,但反之则不然。
查看项目类型如何相互包含,这可能对您有帮助:
关于java - 通用列表<>层次结构困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40365639/