最近,我阅读了很多关于 Java 泛型的文章,因为我要开始一个项目,该项目在很大程度上依赖于这些机制和允许访问它们的公共反射 API。但在我看来,这些有点矛盾:
请注意,通配符只能有一个界限。In 既不能有上限也不能有下限,也不能有多个上限或下限。诸如“? super Long extends Number”或“? extends Comparable & Cloneable”之类的结构是非法的。
(http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#FAQ102;通配符边界部分)
因此,通配符始终只有一个边界(如果您忽略每个下界通配符的上限“对象”)。但是,如果您查看相应的反射 API 类WildcardType
,似乎这不是全部事实:
为什么API只提供的功能getLowerBounds()
和getUpperBounds()
为什么它们返回数组?是否有任何场景,其中将返回长度至少为 2 的数组?
慕码人8056858
相关分类