Java SE规范| S |符号

时间:2015-09-03 17:09:59

标签: java specifications subtyping

我正在读取用于子类型和转换的Java规范我知道S<:T表示S是T的子类型。但是,我不明白什么是| S | <:| T |手段?例如,在这种情况下:

  

一个类型参数是类型变量或通配符,具有上限   (如果需要,从捕获转换中获得)S;和另一种类型   参数T不是类型变量或通配符;既不是| S | <:| T |   也| T | &lt ;: | S |。

| T |是T参考的类型?它是指T的类吗?

1 个答案:

答案 0 :(得分:2)

符号“| T |”根据{{​​3}}中类型擦除的定义,表示类型“T”的类型擦除。

  

类型擦除是从类型(可能包括参数化类型和类型变量)到类型(从不参数化类型或类型变量)的映射。我们写| T |用于擦除类型T.擦除映射定义如下:

     
      
  • 参数化类型(第4.5节)G的擦除是| G |。

  •   
  • 嵌套类型T.C的擦除是| T | .C。

  •   
  • 数组类型T []的删除是| T | []。

  •   
  • 类型变量(第4.4节)的擦除是其最左边界的擦除。

  •   
  • 每种其他类型的删除都是类型本身。

  •   

所以,“| S |<:| T |”意味着S的擦除是T的擦除的子类型。