gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:59:02 25 4
gpt4 key购买 nike

最近,我阅读了很多有关 Java 泛型的内容,因为我将启动一个项目,该项目在很大程度上依赖于这些机制和允许访问它们的公共(public)反射 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类WildcardType ,看来这并不是全部事实:

为什么 API 只提供函数 getLowerBounds()getUpperBounds() 以及为什么它们返回一个数组?有没有什么场景会返回长度至少为2的数组?

最佳答案

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

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

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

编辑:

Here's a link to the 1.8.0_181 sources ,这表明该评论仍然存在。 (Here's the same link for OpenJDK 10.0.2)

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

关于java - 为什么 java.lang.reflect.WildcardType 类返回上限和下限的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52590108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com