2

サブタイプとキャストについて Java 仕様を読んでいます。 S <: T は、S が T のサブタイプであることを意味します。<: |T| 意味?たとえば、このコンテキストでは:

型引数の 1 つは型変数またはワイルドカードで、上限は (必要に応じてキャプチャ変換から) S です。もう 1 つの型引数 T は、型変数またはワイルドカードではありません。|S| も |S| もありません。<: |T| |T|でもありません <: |S|.

|T| 参照の型は? Tのクラスを指していますか?

4

1 に答える 1

3

「|T|」という表記 JLS、セクション 4.6の型消去の定義によると、型 "T" の型消去を意味します。

型消去は、型 (パラメーター化された型と型変数を含む可能性があります) から型 (パラメーター化された型または型変数ではない) へのマッピングです。|T| と書きます。タイプ T の消去の場合。消去マッピングは次のように定義されます。

  • パラメータ化された型 (§4.5) G の消去は |G| です。

  • 入れ子型 TC の消去は |T|.C です。

  • 配列型 T[] の消去は |T|[] です。

  • 型変数 (§4.4) の消去は、その左端の境界の消去です。

  • 他のすべてのタイプの消去は、タイプ自体です。

したがって、「|S| <: |T|」S の消去が T の消去のサブタイプであることを意味します。

于 2015-09-03T17:15:13.993 に答える