我明白下面的声明如何工作.
for(final Animal animal : animalList){ //do some function }@H_301_4@但是在这里使用final关键字的目的是什么?
解决方法
这样做有两个可能的原因:
@H_301_4@>它可以简单地避免在循环体中意外地改变循环变量. (或者记录循环变量不会被改变的事实)
>可以这样做,以便您可以在匿名内部类中引用循环变量.例如:
>可以这样做,以便您可以在匿名内部类中引用循环变量.例如:
for(final Animal animal : animalList){ executor.submit(new Runnable(){ public void run() { animal.Feed(); } }); }@H_301_4@如果在这个例子中省略了最后的内容,这是一个编译错误. @H_301_4@更新它不是Java 8和更高版本中的编译错误.非局部变量现在只需要有效地进行最终化.简单来说,这意味着在初始声明/初始化之后,该变量没有分配给(使用赋值运算符或前/后递增或递减运算符).