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.