ユーザ用ツール

サイト用ツール


java:covariant

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

java:covariant [2007/08/24 14:16] – 外部編集 127.0.0.1java:covariant [2011/06/23 06:02] (現在) nullpon
行 32: 行 32:
 配列の反省を受けて(?)ジェネリクスはcovariantではない。IntegerはNumberであるが、List<Integer>はList<Number>ではない。 配列の反省を受けて(?)ジェネリクスはcovariantではない。IntegerはNumberであるが、List<Integer>はList<Number>ではない。
 <code java> <code java>
-List<Number> i = new ArrayList<Integer>();    // コンパイルエラー+ArrayList<Number> i = new ArrayList<Integer>();    // コンパイルエラー
 </code> </code>
 +
 +これは以下のようなコードを許可しないためと思われる
 +
 +<code java>
 +ArrayList<Number> i = new ArrayList<Integer>();
 +i.add(Long.valueOf(1));
 +</code>
 +
 +配列では以下のソースがコンパイル可能で、実行時エラーになる。
 +
 +<code java>
 +Number[] i = new Integer[1];
 +i[0] = Long.valueOf(1);       // 実行時エラー(ArrayStoreException) 
 +</code>
 +
java/covariant.1187965007.txt.gz · 最終更新: 2011/06/23 06:02 (外部編集)