Junior — Middle
Kā notiek mainīgo nodošana pēc saites, izsaucot metodes?
sobes.tech AI
Atbilde no AI
Java parametrus nodošanai uz metodēm vienmēr veic pēc vērtības, tas ir, kopē mainīgā vērtību. Tomēr, ja tiek nodots objekts, tiek kopēta atsauce uz objektu, nevis pats objekts. To bieži sauc par "atsauces nodošanu", bet patiesībā tiek nodota atsauces kopija.
Tas nozīmē, ka metodē var mainīt objekta stāvokli, uz kuru norāda parametrs, bet nevar mainīt pašu atsauci, lai tā norādītu uz citu objektu.
Piemērs:
class MyObject {
int value;
}
public class Example {
public static void modifyObject(MyObject obj) {
obj.value = 10; // mainām objekta stāvokli
obj = new MyObject(); // mainām lokālo atsauces kopiju
obj.value = 20; // šī izmaiņa neietekmēs ārpus metodes esošo objektu
}
public static void main(String[] args) {
MyObject myObj = new MyObject();
myObj.value = 5;
modifyObject(myObj);
System.out.println(myObj.value); // izvadīs 10
}
}
Šeit redzams, ka izmaiņas objekta stāvoklī metodē paliek, bet atsauces pārrakstīšana neietekmē oriģinālo objektu.