Is there any way that I can pass mutable Objects by value to a function in java?
What I actually want is to pass an object to a method, do some operations on it (change it) and again call that method with that old object only(not the changed value).
here is some sample:
{ MyObj obj = new MyObj(); obj.setName("name");
append(obj);
System.out.println(obj.name);
prepend(obj);
System.out.println(obj.name);
}
void append(MyObj obj){ obj.name+="1"; }
void prepend(MyObj obj){ String a = "1"; obj.name=a+obj.name; }
At the end of this code, I want output as:
name1
1name
Objects themselves aren’t passed at all in Java. Ever.
But everything is passed by value – where the only things that can be passed are primitive values and references.
It’s not quite clear what you’re trying to do – is the idea that you’d like to have a method with (say) a
StringBuilderparameter, but without any changes made to the object from within the method being visible to the caller? If so, you basically need to clone the object yourself.