【发布时间】:2012-11-26 13:12:03
【问题描述】:
案例一
class Program {
static final int var;
static {
Program.var = 8; // Compilation error
}
public static void main(String[] args) {
int i;
i = Program.var;
System.out.println(Program.var);
}
}
案例 2
class Program {
static final int var;
static {
var = 8; //OK
}
public static void main(String[] args) {
System.out.println(Program.var);
}
}
为什么案例1会导致编译错误?
【问题讨论】:
-
案例 2 有效,为什么要关心?
-
它绝对看起来像访问外国决赛(这是非法的)。
-
非常棘手的好问题,现在给大脑工作.. :)
-
@RohitJain 老实说,我不会称这是一个很好的面试问题:您无法根据程序员是否知道该问题的答案得出任何关于程序员水平的结论!
-
这是我听过的最无用的问题之一 :) 我不明白为什么 ppl 试图让编译器脱离程序员。我最好问一下平衡搜索树和布隆过滤器:)
标签: java static final static-initialization qualified-name