اگر در جاوا متغییر های ارجاعی بصورت call by reference ارسال می شوند چرا کد زیر اشاره گر(reference) یک پارامتر ارسالی به متد را تغییر نمی دهد؟
private static class Foo {
String value;
public Foo(String value) {
this.value = value;
}
public void setValue(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
public static void main(String[] args) {
Foo f = new Foo("f");
System.out.println("before = "+f.getValue());// f
changeReference(f);
System.out.println("after = "+f.getValue()); // f
}
public static void changeReference(Foo a) {
Foo b = new Foo("b");
a = b;
}