Widzę pewne zachowanie, którego nie jestem w stanie zrozumieć i zastanawiałem się, czy ktoś byłby na tyle uprzejmy, aby wyjaśnić dokładnie, co się tutaj dzieje. To jest kod, który mam obecnie.Dlaczego usuwam element z niewłaściwej tablicy ArrayList?
public class MyClass {
ArrayList<String> myList = new ArrayList<String>();
public MyClass() {
populate();
removeData(myList);
}
private void populate() {
myList.add("Some data");
myList.add("Some more data");
myList.add("Even more data");
}
private void removeData(ArrayList<String> list) {
ArrayList<String> temp = new ArrayList<String>();
temp = list;
temp.remove("Some data");
}
}
Teraz z jakiegoś powodu po uruchomieniu tego kodu dane są usuwane z ArrayList "myList". Dlaczego tak się dzieje, mimo że mam tylko usuwać dane ze zmiennej wewnątrz metody "removeData", a nie z pola "myList"?
ale przypisane 'temp = list' więc w zasadzie odniesienia są skierowane do tego samego obiektu – ochi
Java przypisać obiekt referencje, musisz przeczytać więcej o podstawach programowania Java i Object Oriented –
Ponieważ templist = mylist przypisuje odnośnik do mylist do templist.so cokolwiek robisz na templistzie wpłynie na moją listę. –