方法参数中的最终关键字
这个问题在这里已经有了答案:
Java在将它们发送给方法之前总是制作一个参数的副本。 这意味着最终并不意味着调用代码的任何区别。 这只意味着在方法内变量不能被重新分配。 (注意,如果你有最终的对象,你仍然可以改变对象的属性)。
有一种情况需要最终声明它 - 否则会导致编译错误 - 即将它们传递给匿名类。 基本示例:
public FileFilter createFileExtensionFilter(final String extension) {
FileFilter fileFilter = new FileFilter() {
public boolean accept(File pathname) {
return pathname.getName().endsWith(extension);
}
};
// What would happen when it's allowed to change extension here?
// extension = "foo";
return fileFilter;
}
删除final
修饰符会导致编译错误,因为它不再保证该值是运行时常量。 改变匿名类外部的值会导致匿名类实例在创建之后表现不同。
Java只是传值。 (或更好的 - 按值传递参考)
所以传入的参数和方法中的参数是指向同一对象(值)的两个不同的处理程序。
因此,如果您更改对象的状态,则会反映到引用它的每个其他变量。 但是如果你重新分配一个新的对象(值)给参数,那么指向这个对象(值)的其他变量就不会被重新赋值。
链接地址: http://www.djcxy.com/p/20849.html上一篇: final keyword in method parameters
下一篇: what's the point?