JLS 的 TypeParameter 产品中的标识符实际上是 TypeVariable 吗?

问题描述

我正在阅读 JLS,Java SE 8 版,但我被困在关于类型变量的部分。

It reads

类型变量是在类中用作类型的非限定标识符, 接口、方法和构造函数体。

类型变量是通过类型参数的声明引入的 泛型类、接口、方法或构造函数(第 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 (将#修改为@)