サブタイプとキャストについて Java 仕様を読んでいます。 S <: T は、S が T のサブタイプであることを意味します。<: |T| 意味?たとえば、このコンテキストでは:
型引数の 1 つは型変数またはワイルドカードで、上限は (必要に応じてキャプチャ変換から) S です。もう 1 つの型引数 T は、型変数またはワイルドカードではありません。|S| も |S| もありません。<: |T| |T|でもありません <: |S|.
|T| 参照の型は? Tのクラスを指していますか?
サブタイプとキャストについて Java 仕様を読んでいます。 S <: T は、S が T のサブタイプであることを意味します。<: |T| 意味?たとえば、このコンテキストでは:
型引数の 1 つは型変数またはワイルドカードで、上限は (必要に応じてキャプチャ変換から) S です。もう 1 つの型引数 T は、型変数またはワイルドカードではありません。|S| も |S| もありません。<: |T| |T|でもありません <: |S|.
|T| 参照の型は? Tのクラスを指していますか?
「|T|」という表記 JLS、セクション 4.6の型消去の定義によると、型 "T" の型消去を意味します。
型消去は、型 (パラメーター化された型と型変数を含む可能性があります) から型 (パラメーター化された型または型変数ではない) へのマッピングです。|T| と書きます。タイプ T の消去の場合。消去マッピングは次のように定義されます。
パラメータ化された型 (§4.5) G の消去は |G| です。
入れ子型 TC の消去は |T|.C です。
配列型 T[] の消去は |T|[] です。
型変数 (§4.4) の消去は、その左端の境界の消去です。
他のすべてのタイプの消去は、タイプ自体です。
したがって、「|S| <: |T|」S の消去が T の消去のサブタイプであることを意味します。