Junior — Middle
Ako sa vykonáva odovzdanie premenných odkazom pri volaní metód?
sobes.tech AI
Odpoveď od AI
V Jave je prenos parametrov do metód vždy podľa hodnoty, teda sa kopíruje hodnota premennej. Avšak, ak sa odovzdá objekt, kopíruje sa referencia na objekt, nie samotný objekt. Toto sa často nazýva "prenos podľa referencie", ale v skutočnosti sa odovzdáva kópia referencie.
To znamená, že vo vnútri metódy je možné zmeniť stav objektu, na ktorý odkazuje parameter, ale nie je možné zmeniť samotnú referenciu tak, aby ukazovala na iný objekt.
Príklad:
class MyObject {
int value;
}
public class Example {
public static void modifyObject(MyObject obj) {
obj.value = 10; // meníme stav objektu
obj = new MyObject(); // meníme lokálnu kópiu referencie
obj.value = 20; // táto zmena nebude mať vplyv na objekt mimo metódy
}
public static void main(String[] args) {
MyObject myObj = new MyObject();
myObj.value = 5;
modifyObject(myObj);
System.out.println(myObj.value); // vypíše 10
}
}
Tu je vidieť, že zmena stavu objektu vo vnútri metódy zostáva, ale prepisovanie referencie nemá vplyv na pôvodný objekt.