グローバル変数のデータを代入してローカル変数のデータを変更しようとしていますが、ローカル変数の構造を変更すると、グローバル変数も変更されます。私は理解していないJava:ローカル変数がグローバル変数のオリジナルコピーに影響するのはなぜですか?
private void remove(Message M) {
int p = list.lastIndexOf(M);
List<Message> x = list;
list.remove(p);
indexedMessages.remove(M.getMessageid());
notifyItemRemoved(p);
notifyItemRangeChanged(p, list.size());
// Removing the following items from "x" also causes the elements to be removed from recycleView.
x.remove(0);
x.remove(x.size() - 1);
}
2つのこと:
- なぜ "×" 影響 "リスト"
- そして、なぜある "notifyItemRemoved" は再度トリガ。とにかく
、オリジナルの「リスト」(民間の一覧リスト)で、最初&最後の項目は単なるプレースホルダです。このリストから項目が削除されると、そのリストの新しいコピーをプレースホルダなしで保存したいと考えています。
アダプタが作成されるたびにプレースホルダが追加されます。ローカル変数x
が行われる前に
両方の変数が同じオブジェクトを参照します。それらは単にメモリ位置へのポインタです。 –
変数は参照です。両方の変数が同じオブジェクトを指しています。 –
@ JeroenVannevel "x"を変更すると "list"のメモリ位置でデータが変更されないように、新しい場所に "x"を置く方法を教えてください。 – Relm