なぜリストの変更が許可されていないのかというジェネリック拡張の背後にある概念は何ですか? String は Object を拡張し、正当であるはずなので、 list に文字列を追加すると、なぜコンパイル時エラーがスローされるのですか?
これによりコンパイルエラーが発生した場合、作成されたリストの用途は何ですか。
List<? extends Object> ls=new ArrayList<String>();
ls.add("asd"); // compilation error
そして、スーパーの場合はコンパイルします。
List<? super Integer> ls1=new ArrayList<Object>();
ls1.add(1);
Kathy Sierra と Javadoc を読みましたが、これが何を意味するのか理解できません。これを理解するために、例を挙げて詳細に説明してください。