请看一下这个片段:
public class A {
void method() {
System.out.print(B.j);//This is legal!
class C {
void method () {
System.out.print(j);//This is illegal!
}
}
final int j = 10;
class D {
void method() {
System.out.print(j);//This is legal!
}
}
}
}
class B {
static int j = 10;
}
我们可以在定义之前在某个地方访问“Bj”,而在 C 类中访问“final int j”的情况下这是非法的。
java编译器是否将本地类视为简单的变量/对象?特别是,这种行为背后的原因是什么?我的意思是前向检查适用于 Bj,但不适用于 C 类中的“j”。