Junior — Middle
Kako se vrši prenos promenljivih po referenci prilikom poziva metoda?
sobes.tech АИ
Одговор од АИ
U Javi, prenos parametara u metodima uvek se vrši po vrednosti, što znači da se kopira vrednost promenljive. Međutim, ako se prosledi objekat, kopira se referenca na objekat, a ne sam objekat. Ovo se često naziva "prenos po referenci", ali u stvari se prosleđuje kopija reference.
To znači da unutar metode možete promeniti stanje objekta na koji referenca ukazuje, ali ne možete promeniti samu referencu da ukazuje na drugi objekat.
Primer:
class MyObject {
int value;
}
public class Example {
public static void modifyObject(MyObject obj) {
obj.value = 10; // menjamo stanje objekta
obj = new MyObject(); // menjamo lokalnu kopiju reference
obj.value = 20; // ova promena neće uticati na objekat izvan metode
}
public static void main(String[] args) {
MyObject myObj = new MyObject();
myObj.value = 5;
modifyObject(myObj);
System.out.println(myObj.value); // ispišće 10
}
}
Ovde se vidi da se promena stanja objekta unutar metode zadržava, ali prepisivanje reference ne utiče na originalni objekat.