答案 0 :(得分:23)
有效的最终意味着它在获得初始值后永远不会改变。
一个简单的例子:
public void myMethod() {
int a = 1;
System.out.println("My effectively final variable has value: " + a);
}
此处,a
未声明为最终版,但它被视为有效最终,因为它永远不会更改。
从Java 8开始,可以通过以下方式使用它:
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开始,它实际上是最终的。
答案 1 :(得分:5)
根据docs:
在初始化后永远不会更改其值的变量或参数是effectively final
。