为了账号安全,请及时绑定邮箱和手机立即绑定

java.lang.reflect.WildcardType 类为什么会返回上界和下界的数组?

java.lang.reflect.WildcardType 类为什么会返回上界和下界的数组?

墨色风雨 2021-10-20 16:26:58
最近,我阅读了很多关于 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 的数组?
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

我目前可用的来源(1.8.0_172)包含这个“内部”评论:


// one or many? Up to language spec; currently only one, but this API

// allows for generalization.

因此,该 API 似乎是为将来可能允许多个边界的情况而设计的。


编辑:


这是 1.8.0_181 来源的链接,显示此评论仍然存在。(这是 OpenJDK 10.0.2 的相同链接)


为什么即使不需要这种概括?假设您稍后更改 api,并且所有现有代码都需要更改Type为Type[]我们您需要添加新方法,这使得很难解释为什么有两种方法。


查看完整回答
反对 回复 2021-10-20
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信