It is not transmitted by reference. Rather, it is passed by reference value, which is a subtle but important difference.
, foo main(), foo , , . , foo - , foo . , foo . , Java; , , .
. :
class A {
public int n;
public A(int n) {
this.n = n;
}
}
:
public static void mutate(A a) {
a.n = 42;
}
- :
A a = new A(0);
A.mutate(a);
System.out.println(a.n);
42
, a mutate(). :
public static void mutate(A a) {
a = new A(42);
}
:
A a = new A(0);
A.mutate(a);
System.out.println(a.n);
0
, a . , , . , , .