这个问题在这里已经有答案了:
在Java8Lambda表达式中有效地使用final变量有什么好处(2个答案)
为什么在Java8中引入了“effectivefinal”[重复](1个答案)
上个月关门了。
class Outer
{
public void method1()
{
int x = 10;
class Inner
{
public void inMethod()
{
System.out.println(x);
}
}
Inner i = new Inner();
i.inMethod();
}
public static void main(String[] args)
{
Outer obj = new Outer();
obj.method1();
}
}
我已经讨论了一些关于stackoverflow的问题,即使那些问题没有确切的答案。方法局部内部类-可以访问非最终局部变量
1条答案
按热度按时间3wabscal1#
好,
x
未标记为“最终”,但它是effectively-final
. 如果你加上x += 5;
在......下面int x = 10;
它将不再工作,因为变量不再是有效的最终变量。https://www.baeldung.com/java-effectively-final我想这主要是为了更好地支持lambdas而改变/实现的。想象一下,您必须始终标记一个变量
final
如果你想在兰姆达车里用的话。