Sobes.tech
Junior — Middle

Come avviene il passaggio di variabili per riferimento durante la chiamata di metodi?

sobes.tech AI

Risposta dell'AI

In Java, il passaggio dei parametri ai metodi avviene sempre per valore, cioè viene copiata il variabile valore. Tuttavia, se si passa un oggetto, viene coperta la referenza all'oggetto, non l'oggetto stesso. Questo è spesso chiamato "passaggio per riferimento", ma in realtà viene passata una copia della referenza.

Ciò significa che all'interno del metodo è possibile modificare lo stato dell'oggetto a cui fa riferimento il parametro, ma non è possibile modificare la referenza stessa per puntare a un altro oggetto.

Esempio:

class MyObject {
    int value;
}

public class Example {
    public static void modifyObject(MyObject obj) {
        obj.value = 10; // cambiamo lo stato dell'oggetto
        obj = new MyObject(); // cambiamo la copia locale della referenza
        obj.value = 20; // questa modifica non influirà sull'oggetto fuori dal metodo
    }

    public static void main(String[] args) {
        MyObject myObj = new MyObject();
        myObj.value = 5;
        modifyObject(myObj);
        System.out.println(myObj.value); // stamperà 10
    }
}

Qui si può vedere che la modifica dello stato dell'oggetto all'interno del metodo si mantiene, ma la reassegnazione della referenza no.