私はJava Generics のドキュメントを見ていて、このコードを見つけました。
public class WildcardError {
void foo(List<?> l) {
//This give a compile time error
l.set(0,l.get(0));
}
}
から要素を取得し、List<?>それを別の に設定しようとしていることは理解できList<?>ます。したがって、コンパイラはエラーを出します。私の質問は、2 つのリストが異なる場合、つまりl.set(0, m.get(0))ここのリストlと異なる場合に意味があるということmです。しかし、上記の例では、lとlは同じリストです。コンパイラがそれを理解するほど賢くないのはなぜですか? 実装するのは難しいですか?
編集:ヘルパーメソッドまたはTの代わりに使用して修正できることを認識してい?ます。なぜコンパイラが私のためにそれをしないのか疑問に思っています。