正如Rytmis所说,Java按值传递引用。这意味着您可以合法地对方法的参数调用变异方法,但不能重新分配它们并期望值传播。
例:
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}编辑: 在这种情况下,这意味着尽管此方法
voiceSetList可能会
更改(它可能添加了新元素),但
vsName对方法的更改将不可见。为避免混淆,我经常标记方法参数
final,以防止在方法内部重新分配(偶然地或不偶然地)它们。这将完全避免编译第二个示例。



