【发布时间】:2014-03-01 06:02:48
【问题描述】:
请看一下这个sn-p:
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;
}
我们可以在定义之前访问“B.j”,而在 C 类中访问“final int j”是非法的。
java 编译器是否将本地类视为简单的变量/对象?特别是,这种行为背后的基本原理是什么?我的意思是前向检查适用于 B.j,但不适用于 C 类中的“j”。
【问题讨论】:
-
System.out.print(j)在类D内是合法的
标签: java compiler-construction inner-classes local-class