Java 中的内部本地 类
Inner Local Classes in Java
public class Main {
public static void main(String[] args) {
int b=1;
final int c=2;
String s1[] = new String[]{"A","B","C"};
class InnerMain{
int a=5;
public void show(){
System.out.println(s1[0]);
System.out.println("A:" + a);
System.out.println("B:" + b);
System.out.println("C:" + c);
}
}
InnerMain test =new InnerMain();
test.show();
}
}
我读过的书说本地 class 只能使用 final
变量和本地 class 所在方法的引用。在这个例子中,我使用了变量 b
那不是 final
或参考。它 运行 并且我没有收到任何错误。如何?有人可以解释这种行为吗?
您的书可能已经过时了。由于 Java 8 你可以使用 effectively final 局部变量。
如果您尝试在本地 class 定义之前、之后或中的任何地方更改 b
,您会遇到编译器错误。
public class Main {
public static void main(String[] args) {
int b=1;
final int c=2;
String s1[] = new String[]{"A","B","C"};
class InnerMain{
int a=5;
public void show(){
System.out.println(s1[0]);
System.out.println("A:" + a);
System.out.println("B:" + b);
System.out.println("C:" + c);
}
}
InnerMain test =new InnerMain();
test.show();
}
}
我读过的书说本地 class 只能使用 final
变量和本地 class 所在方法的引用。在这个例子中,我使用了变量 b
那不是 final
或参考。它 运行 并且我没有收到任何错误。如何?有人可以解释这种行为吗?
您的书可能已经过时了。由于 Java 8 你可以使用 effectively final 局部变量。
如果您尝试在本地 class 定义之前、之后或中的任何地方更改 b
,您会遇到编译器错误。