Sobes.tech
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.