gpt4 book ai didi

java - 在内部类中使用非最终局部变量

转载 作者:搜寻专家 更新时间:2023-10-31 20:11:06 26 4
gpt4 key购买 nike

JLS 8.1.3为我们提供了有关未在内部类中声明但在类中使用的变量的规则。

Any local variable, formal parameter, or exception parameter used but not declared in an inner class must either be declared final or be effectively final (§4.12.4), or a compile-time error occurs where the use is attempted.

一个例子:

class A{
void baz(){
int i = 0;
class Bar{ int j = i; }
}

public static void main(String[] args){
}
}

DEMO

为什么要编译代码?我们在内部类中使用了未在其中声明的非最终局部变量。

最佳答案

在方法 baz 中定义的变量 i 实际上是最终的,因为变量 i 的值没有在别处修改。如果你改变它

void baz(){
int i = 0;
i = 2;
class Bar{ int j = i; }
}

代码将无法编译,因为变量 i 不再是有效的 final,但是如果你只是声明变量 i 并在另一行中初始化它,代码将编译,因为变量是有效的 final

  void baz(){
int i;
i = 2;
class Bar{ int j = i; }
}

关于java - 在内部类中使用非最终局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27856573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com