###発生している問題・エラーメッセージ
Javaの勉強をしています。
ワイルドカードを使用したジェネリックスの指定について、
以下のコードでコンパイルエラーになる理由について知りたいです。
Javaのどのような構文ルールから、コンパイルエラーになるのでしょう?
なお質問者は、ワイルドカードを使用したジェネリックス周りについて、
以下のような前提の認識でおります。
- List<? extends BBB4_4>
listにはBBB4_4と、BBB4_4のサブクラスのインスタンスが設定できる。
- List<? super BBB4_4>
listにはBBB4_4と、BBB4_4のスーパークラスのインスタンスが設定できる。
###該当のソースコード
Java
1package Chapter4; 2 3import java.util.List; 4 5class AAA4_4{} 6class BBB4_4 extends AAA4_4{} 7 8public class No4_4 { 9 public void addData(List<? extends BBB4_4> list){ 10 list.add(new BBB4_4()); // コンパイルエラー 11 // ちなみに「List<? super BBB4_4>」の場合は上の記述でもエラーにならない 12 } 13}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/01 07:10