Junior
Hogyan kerülnek átadásra a paraméterek a Java módszerekben?
sobes.tech MI
Válasz az MI-től
Java-ban a metódusok paraméterei érték szerint (pass-by-value) kerülnek átadásra.
Primitív típusok:
- A primitív típus értékének másolata kerül átadásra. A paraméteren belüli módosítás nem befolyásolja a külső változót.
// Példa primitív típusra
public void changeValue(int x) {
x = x + 10; // A metóduson belüli másolat módosul
}
// Használat:
int original = 5;
changeValue(original);
// Az original továbbra is 5
Objektumok (referencia típusok):
- A referencia másolata kerül átadásra. Mindkét referencia (az eredeti és a metódusban lévő) ugyanarra az objektumra mutat.
- Az objektum állapotának módosítása (pl. setter hívása, mezők módosítása) a referencia segítségével a metódusban az eredeti objektumot módosítja.
- A paraméter újra hozzárendelése egy másik objektumhoz a metódusban nem változtatja meg az eredeti referenciát.
// Referencia típus példája (objektum)
public class MyObject {
private int value;
public MyObject(int value) {
this.value = value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public void modifyObject(MyObject obj) {
obj.setValue(100); // Az eredeti objektum állapota módosul
}
public void reassignObject(MyObject obj) {
obj = new MyObject(200); // A paraméter most egy új objektumra mutat, az eredeti referencia nem változik
}
// Használat:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// Az originalObject értéke most 100
MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// Az anotherObject továbbra is az eredeti objektumra mutat, értéke 50
Röviden: A referencia értéke (cím) kerül átadásra, nem az objektum maga. Ez lehetővé teszi az objektum módosítását ezen a referencián keresztül, de nem az eredeti referencia módosítását másik objektumra.