次のコード セグメントがあります。
public void reorder(int fromIndex, int toIndex) {
getElements().add(toIndex, getElements().remove(fromIndex));
}
ここで、メソッドgetElements
の戻り値の型はList<?>
です。remove
メソッドには戻り値の型が?
あり、add
メソッドはその引数を として示しますint index, ? element
。remove
メソッドの戻り値の型とメソッドの 2 番目の引数がadd
同じであるため、私の仮定は、?
メソッド呼び出しが成功する必要があるということでした。しかし、私は間違っていました.上記のコードセグメントはエラーになります:
The method add(int, capture#17-of ?)
in the type List<capture#17-of ?>
is not applicable for the arguments (int, capture#18-of ?)
getElements
ここでは、リストに直接アクセスすることはできず、メソッドによって返された元の型かどうかもわかりません。ここで必要なのは、アイテムを で削除してfromIndex
に配置することだけtoIndex
です。それで、どうすればそれを達成できますか?また、ジェネリックの理解に何か問題がありますか?