匿名类状态的文档
匿名类不能访问其封闭作用域中的局部变量,而这些局部变量未声明为最终变量或实际上是最终变量。
我不明白变量是“有效的最终”意味着什么。有人能给我举个例子来帮助我理解这意味着什么吗?
发布于 2014-01-31 06:12:33
实际上,final意味着在获得初始值之后,它永远不会被更改。
一个简单的例子:
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);
}
};
}在Java7和更早版本中,a必须声明为final才能在这样的本地类中使用,但是从Java 8中可以获得有效的最终结果。
发布于 2014-01-31 06:16:47
根据文档
值在初始化后从未更改的变量或参数是effectively final。
https://stackoverflow.com/questions/21473568
复制相似问题