私は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
の代わりに使用して修正できることを認識してい?
ます。なぜコンパイラが私のためにそれをしないのか疑問に思っています。