Sobes.tech
Junior — Middle

Hogyan történik a változók referencia szerinti átadása metódushíváskor?

sobes.tech MI

Válasz az MI-től

Java-ban a paraméterek átadása a módszereknek mindig érték szerint történik, azaz a változó értékét másolja. Azonban, ha egy objektumot adunk át, akkor az objektumra mutató hivatkozást másolja, nem maga az objektum. Ezt gyakran "hivatkozás szerinti átadásnak" nevezik, de valójában egy hivatkozás másolatát adják át.

Ez azt jelenti, hogy a metóduson belül módosítható a paraméterként átadott objektum állapota, de nem lehet megváltoztatni a hivatkozást, hogy másik objektumra mutasson.

Példa:

class MyObject {
    int value;
}

public class Example {
    public static void modifyObject(MyObject obj) {
        obj.value = 10; // az objektum állapotának módosítása
        obj = new MyObject(); // a helyi hivatkozás másolásának módosítása
        obj.value = 20; // ez a változtatás nem befolyásolja a metóduson kívüli objektumot
    }

    public static void main(String[] args) {
        MyObject myObj = new MyObject();
        myObj.value = 5;
        modifyObject(myObj);
        System.out.println(myObj.value); // 10-et ír ki
    }
}

Itt látható, hogy a metóduson belüli objektum állapotának változtatása megmarad, de a hivatkozás újraassignálása nem.