如何解决JLS 的 TypeParameter 产品中的标识符实际上是 TypeVariable 吗?
我正在阅读 JLS,Java SE 8 版,但我被困在关于类型变量的部分。
类型变量是在类中用作类型的非限定标识符, 接口、方法和构造函数体。
类型变量是通过类型参数的声明引入的 泛型类、接口、方法或构造函数(第 8.1.2 节、第 9.1.2 节、 §8.4.4,§8.8.4).
TypeParameter:
{TypeParameterModifier} Identifier [TypeBound]
TypeParameterModifier:
Annotation
TypeBound:
extends TypeVariable
extends ClassOrInterfaceType {AdditionalBound}
AdditionalBound:
& InterfaceType
[...]
每个声明为类型参数的类型变量都有一个界限。如果不 bound 是为类型变量声明的,假定为 Object。如果一个界 被声明,它包括:
- 单类型变量 T,或
- 一个类或接口类型 T 可能后跟接口类型 I_1 & ... & I_n。
重新排列引号
- 类型变量是一个不合格的标识符(来自上面)
- 每个声明为类型参数的类型变量都有一个界限。(来自上面)
- 在类的类型参数部分,如果 S 是 T 的边界,则类型变量 T 直接依赖于类型变量 S(来自部分 8.1.)
对我来说——如果我的理解是正确的——让 TypeParameter
产生式如下:
TypeParameter:
{TypeParameterModifier} TypeVariable [TypeBound]
毕竟,TypeVariable
已经定义为
TypeVariable:
{Annotation} Identifier
我的理解 - JLS 为 Identifier
制作的 TypeParameter
实际上是 TypeVariable
- 正确还是我在这里遗漏了什么?
这部分是关于类型变量的,这让我很困惑,解释性文本也提到了类型变量,但是当我尝试将制作与我联系起来时,文本似乎在谈论 Identifier
(因此我的问题)。
现在的方式,阅读此作品中的 Identifier
,向我表明这是 TypeParameter
而不是 TypeVariable
的标识符,这对我来说表明这些应该是两个不同的东西。这是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。