Java 术语是如何定义的;“最左边的”;及;“最右边的”;(指泛型)明白它们的意思吗?

Java 术语是如何定义的;“最左边的”;及;“最右边的”;(指泛型)明白它们的意思吗?,java,generics,type-theory,Java,Generics,Type Theory,通过阅读,我终于开始真正探索泛型的一些更微妙之处 但我还是对一些行话很感兴趣。我的外行对“最左边的”和“最右边的”的理解显然不同于兰格在文章中的用法 “在翻译期间,执行类型擦除,这意味着 类型参数将替换为其最左侧的绑定或对象(如果没有) 已指定绑定…” “类型擦除。最左边的上界用于类型擦除和 替换字节码中的类型参数。在类框{…}中,所有出现的T都将替换为 上限数字。例如,如果类框有一个私有字段 类型为T,以及用于设置此私有 字段,则在类型擦除和 该方法将转换为方法无效集(数字内容) “类型参

通过阅读,我终于开始真正探索泛型的一些更微妙之处

但我还是对一些行话很感兴趣。我的外行对“最左边的”和“最右边的”的理解显然不同于兰格在文章中的用法

“在翻译期间,执行类型擦除,这意味着 类型参数将替换为其最左侧的绑定或对象(如果没有) 已指定绑定…”

类型擦除最左边的上界用于类型擦除和 替换字节码中的类型参数。在类框{…}中,所有出现的T都将替换为 上限数字。例如,如果类框有一个私有字段 类型为T,以及用于设置此私有 字段,则在类型擦除和 该方法将转换为方法无效集(数字内容)

“类型参数的类型擦除是其最左边的边界…”

给定的
;我的理解是,
T
是类型参数,
Number
是边界。那么,既然
Number
位于类型参数
T
右侧,为什么不将
Number
称为“最右侧的绑定”?这只是一个深奥的数学术语吗?在形式类型理论中,六意味着九,左意味着右

有人能告诉我为什么在字体理论中,视觉上印刷在右边的东西被称为“最左边的”吗


提前谢谢。

啊!我怀疑这是因为可能有不止一个绑定

“…指定类型参数边界的语法为:

<TypeParameter extends Class & Interface 1 & ... & Interface N > 

边界列表由一个类和/或多个接口组成

示例(具有多个边界的类型参数):

类对
实现可比较、可克隆的{…}
这是一个泛型类,有两个类型参数a和B,都是 有两个界限……”


我可以看出,在这种情况下,将有一个最左边的和一个最右边的边界。

您可能是对的,因为JLS的4.4包含以下短语:“绑定中类型的顺序仅在类型变量的删除由其绑定中的第一个类型决定时才有意义,并且类类型或类型变量只能出现在第一个位置。”“最左侧”表示“第一个”。最后出现的类型不重要,Langer不使用“最右侧”“在你链接到的页面中。我建议不要使用该网站。她在自己的词汇表中混用了许多术语。例如,她在自己的词汇表中合并了实例化和参数化,这与SE相矛盾(这就是为什么您不理解参数化如何也是封闭类型的原因)。您应该使用JavaSE,因为这是官方规范。她的网站试图为那些无法理解JavaSE的人解释泛型,但她对概念的简化往往非常复杂。你应该花点时间去理解java SE,甚至在关于通配符的“Wild FJ”论文中(这促使java合并泛型)都没有交替使用实例化和参数化这两个词。只有她自己的网站定义了自己的术语;她这样做的原因是为了简化概念。
class Pair<A extends Comparable<A> & Cloneable , 
           B extends Comparable<B> & Cloneable > 
  implements Comparable<Pair<A,B>>, Cloneable { ... }