「4.5.2. 引数付き型のメソッドとコンストラクター」の編集履歴(バックアップ)一覧はこちら

4.5.2. 引数付き型のメソッドとコンストラクター」(2012/09/10 (月) 17:27:22) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*[[4. 型と値と変数]] **[[4.1. 型と変数の種類]] **[[4.2. プリミティブ型と値]] **[[4.3. 参照型と値]] **[[4.4. 型変数]] **[[4.5. 引数付き型]] ***[[4.5.1. 型実引数とワイルドカード]] ***4.5.2. 引数付き型のメソッドとコンストラクター 型引数A&sub(){1},...,A&sub(){n}を伴うジェネリッククラスやインタフェース宣言をCとします。C<T&sub(){1},...,T&sub(){n}>はCの呼び出しであるとし、1≦i≦nに対しT&sub(){i}は(むしろワイルドカードではない)型だとします。すると: -mをC内のメンバーもしくはコンストラクター宣言([[8.2.>8.2. クラスメンバー]]、[[8.8.6.>8.8.6. コンストラクターの型]])とし、その宣言された型をTとすると、   C<T&sub(){1},...,T&sub(){n}>内のmの型はT[A&sub(){1}:=T&sub(){1},...,A&sub(){n}:=T&sub(){n}]です。 -mをD内のメンバーもしくはコンストラクター宣言とします。ここで、DはCを拡張した型もしくはCを実装したインタフェースです。D<U&sub(){1},...,U&sub(){k}>をDと対応するC<T&sub(){1},...,T&sub(){n}>のスーパータイプとすると、   C<T&sub(){1},...,T&sub(){n}>内のmの型はD<U&sub(){1},...,U&sub(){k}>内のmの型です。 Cの呼び出しにおける型実引数のいずれかがワイルドカードならば、: -C<T&sub(){1},...,T&sub(){n}>内のフィールドやメソッドやコンストラクターの型は、C<T&sub(){1},...,T&sub(){n}>の[[捕捉変換>5.1.10. 捕捉変換]]内のフィールドやメソッドやコンストラクターの型です。 -DをC内のクラスやインタフェース宣言(ジェネリックでも構わない)とします。Dがジェネリックであれば、C<T&sub(){1},...,T&sub(){n}>内のDの型はDであり、全ての型実引数は非制限ワイルドカードです。 &i(){&small(){これは重要ではありません。引数付き型のメンバーに[[捕捉変換>5.1.10. 捕捉変換]]なしでアクセスするのは不可能であるためであり、クラスインスタンス作成式の中で&tt(){new}キーワードの後にワイルドカード型は使えないためです。}} &i(){&small(){前文の唯一の例外は入れ子になった引数付き型が[[instanceof演算子>15.20.2. 型比較演算子instanceof]]の中の式として使われる場合です。この時、捕捉変換は適用されません。}} **[[4.6. 型の抹消]] **[[4.7. 具象可能型]] **[[4.8. 未加工型]] **[[4.9. 交差型]] **[[4.10. 型の派生]] **[[4.11. 型の使用箇所]] **[[4.12. 変数]]
*[[4. 型と値と変数]] **[[4.1. 型と変数の種類]] **[[4.2. プリミティブ型と値]] **[[4.3. 参照型と値]] **[[4.4. 型変数]] **[[4.5. 引数付き型]] ***[[4.5.1. 型実引数とワイルドカード]] ***4.5.2. 引数付き型のメソッドとコンストラクター 型引数A&sub(){1},...,A&sub(){n}を伴うジェネリッククラスやインタフェース宣言をCとします。C<T&sub(){1},...,T&sub(){n}>はCの呼び出しであるとし、1≦i≦nに対しT&sub(){i}は(むしろワイルドカードではない)型だとします。すると: -mをC内のメンバーもしくはコンストラクター宣言([[8.2.>8.2. クラスメンバー]]、[[8.8.6.>8.8.6. コンストラクターの型]])とし、その宣言された型をTとすると、   C<T&sub(){1},...,T&sub(){n}>内のmの型はT[A&sub(){1}:=T&sub(){1},...,A&sub(){n}:=T&sub(){n}]です。 -mをD内のメンバーもしくはコンストラクター宣言とします。ここで、DはCを拡張した型もしくはCを実装したインタフェースです。D<U&sub(){1},...,U&sub(){k}>をDと対応するC<T&sub(){1},...,T&sub(){n}>のスーパータイプとすると、   C<T&sub(){1},...,T&sub(){n}>内のmの型はD<U&sub(){1},...,U&sub(){k}>内のmの型です。 Cの呼び出しにおける型実引数のいずれかがワイルドカードならば、: -C<T&sub(){1},...,T&sub(){n}>内のフィールドやメソッドやコンストラクターの型は、C<T&sub(){1},...,T&sub(){n}>の[[捕捉変換>5.1.10. 捕捉変換]]内のフィールドやメソッドやコンストラクターの型です。 -DをC内のクラスやインタフェース宣言(ジェネリックでも構わない)とします。Dがジェネリックであれば、C<T&sub(){1},...,T&sub(){n}>内のDの型はDであり、全ての型実引数は非制限ワイルドカードです。 &i(){&small(){これは重要ではありません。引数付き型のメンバーに[[捕捉変換>5.1.10. 捕捉変換]]なしでアクセスするのは不可能であるためであり、クラスインスタンス作成式の中で&tt(){new}キーワードの後にワイルドカード型は使えないためです。}} &i(){&small(){前文の唯一の例外は入れ子になった引数付き型が[[instanceof演算子>15.20.2. 型比較演算子instanceof]]の中の式として使われる場合です。この時、捕捉変換は適用されません。}} **[[4.6. 型の抹消]] **[[4.7. 具象可能型]] **[[4.8. 未加工型]] **[[4.9. 交差型]] **[[4.10. サブタイプ化]] **[[4.11. 型の使用箇所]] **[[4.12. 変数]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
人気記事ランキング
目安箱バナー