As Rytmis said, Java passes references by value. What this means is that you can legitimately call mutating methods on the parameters of a method, but you cannot reassign them and expect the value to propagate.
Example:
private void goodChangeDog(Dog dog) {
dog.setColor(Color.BLACK); // works as expected!
}
private void badChangeDog(Dog dog) {
dog = new StBernard(); // compiles, but has no effect outside the method
}
Edit: What this means in this case is that although voiceSetList
might change as a result of this method (it could have a new element added to it), the changes to vsName
will not be visible outside of the method. To prevent confusion, I often mark my method parameters final
, which keeps them from being reassigned (accidentally or not) inside the method. This would keep the second example from compiling at all.
No comments:
Post a Comment