Why does the java.lang.reflect.WildcardType class return arrays for the upper and lower bounds?
最近,我读了很多关于Java泛型的文章,因为我要开始一个很大程度上依赖于这些机制和公共反射API允许访问它们的项目。但在我看来,这有点矛盾:
Note, a wildcard can have only one bound. In can neither have both an upper and a lower bound nor several upper or lower bounds. Constructs such as" ? super Long extends Number" or " ? extends Comparable & Cloneable" are illegal.
号
(http://www.angelikalanger.com/genericsfaq/faqsections/typearguments.html faq102;节通配符界限)
因此,通配符总是只有一个界限(如果忽略与每个下限通配符一起使用的上限"对象")。但是,如果您查看对应的反射API类
为什么API只提供
我目前可用的资料来源(1.8.0_172)包含以下"内部"评论:
1 2 | // one or many? Up to language spec; currently only one, but this API // allows for generalization. |
因此,似乎API是为将来可能允许多个边界的情况而设计的。
编辑:
这里有一个1.8.0_来源的链接,显示这个评论仍然存在。(以下是OpenJDK 10.0.2的相同链接)
为什么不需要这种概括呢?假设您稍后会更改API,并且所有现有代码都需要从