[英]Why local variables are final?
为什么局部变量作为方法参数还是内部方法作为最终变量。
private void add(final int a , final int b) {
final int c = 0;
}
请任何人clarify.i正在搜索很多,但我没有找到确切的答案。
功能样式使用最终变量。 这是原因之一。 另一个是闭包。
最终变量是唯一可以在闭包中使用的变量。 因此,如果您想执行以下操作:
void myMethod(int val) {
MyClass cls = new MyClass() {
@override
void doAction() {
callMethod(val); // use the val argument in the anonymous class - closure!
}
};
useClass(cls);
}
这不会编译,因为编译器要求val
是final。 因此将方法签名更改为
void myMethod(final int val)
将解决问题。 局部最终变量也将执行以下操作:
void myMethod(int val) {
final int val0;
// now use val0 in the anonymous class
在这些情况下,final仅表示无法更改值。 尝试为您的任何最终变量设置另一个值将导致编译时错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.