变量是什么“有效地最终”?意思? [英] What does a variable being "effectively final" mean?

查看:158
本文介绍了变量是什么“有效地最终”?意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

关于匿名类的文档说明


匿名类无法访问未被声明为final或者有效最终的封闭范围
中的局部变量。

An anonymous class cannot access local variables in its enclosing scope that are not declared as final or effectively final.

我不明白变量是有效最终是什么意思。有人可以提供一个例子来帮助我理解这意味着什么吗?

I don't understand what does a variable being "effective final" mean. Can someone provide an example to help me understand what that means?

推荐答案

有效的最终意味着它在获得初始值后永远不会改变值。

Effectively final means that it is never changed after getting the initial value.

一个简单的例子:

public void myMethod() {
    int a = 1;
    System.out.println("My effectively final variable has value: " + a);
}

此处, a 未被声明为final,但它被认为是有效的最终,因为它永远不会被更改。

Here, a is not declared final, but it is considered effectively final since it is never changed.

从Java 8开始,这可以用于以下方式:

Starting with Java 8, this can be used in the following way:

public void myMethod() {
    int a = 1;
    Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.println("My effectively final variable has value: " + a);
        }
    };
}

在Java 7及更早版本中, a 必须被声明为 final 才能在这样的本地类中使用,但是从Java 8开始,它就足以成为最终的。

In Java 7 and earlier versions, a had to be declared final to be able to be used in an local class like this, but from Java 8 it is enough that it is effectively final.

这篇关于变量是什么“有效地最终”?意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆