Sobes.tech
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.