次のコード セグメントがあります。
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です。それで、どうすればそれを達成できますか?また、ジェネリックの理解に何か問題がありますか?