我理解下面的声明是如何工作的。
for(final Animal animal : animalList){
//do some function
}
但是这里使用final关键字的目的是什么?
这样做有两个可能的原因:
它可能只是避免在循环体中意外更改循环变量的一种方法。 (或者document事实上循环变量不会改变。)
-
可以这样做,以便您可以引用匿名内部类中的循环变量。例如:
for(final Animal animal : animalList){
executor.submit(new Runnable(){
public void run() {
animal.feed();
}
});
}
如果省略,则会出现编译错误final
在这个例子中。
UPDATE在Java 8及以后的版本中不是编译错误。非局部变量现在只需要有效最终。简单来说,这意味着在初始声明/初始化之后,变量不会被分配(使用赋值运算符或前/后递增或递减运算符)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)