java – 在增强型for循环中为循环变量使用final的目的是什么?

前端之家收集整理的这篇文章主要介绍了java – 在增强型for循环中为循环变量使用final的目的是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我明白下面的声明如何工作.
for(final Animal animal : animalList){
//do some function
}

但是在这里使用final关键字的目的是什么?

解决方法

这样做有两个可能的原因:

>它可以简单地避免在循环体中意外地改变循环变量. (或者记录循环变量不会被改变的事实)
>可以这样做,以便您可以在匿名内部类中引用循环变量.例如:

for(final Animal animal : animalList){
    executor.submit(new Runnable(){
        public void run() {
            animal.Feed();
        }
    });
}

如果在这个例子中省略了最后的内容,这是一个编译错误.

更新它不是Java 8和更高版本中的编译错误.非局部变量现在只需要有效地进行最终化.简单来说,这意味着在初始声明/初始化之后,该变量没有分配给(使用赋值运算符或前/后递增或递减运算符).

猜你在找的Java相关文章