我感兴趣地阅读了这个问题: 我可以在 Java 中通过引用传递参数吗?
结果是参数(不是原语)是通过复制参考值来传递的。正如示例所述;你不能修改你给的参数的引用:
Object o = "Hello";
mutate(o)
System.out.println(o); // Will print Hello
private void mutate(Object o) { o = "Goodbye"; } //NOT THE SAME o!
这种问题可以避免使用final
这样的:
private void mutate(final Object o) { o = "Goodbye"; } //Compilation error
问题:
- 这种情况下的
final
关键字是否仅用于引发编译错误? - 如果最后你不能修改给定参数的引用,为什么不是
final
隐式或强制的?
我很少将final
Java 中的方法参数用于方法参数,但现在我想不出你会自愿省略放入final
方法参数的任何情况。
谢谢!