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);
}
}
class Program {
static final int var;
static {
var = 8; //OK
}
public static void main(String[] args) {
System.out.println(Program.var);
}
}
为什么情况1会导致编译错误?
JLS保留了答案(请注意粗体字):
同样,每个空白最终变量最多只能分配一次;对其进行分配时,必须绝对将其取消分配。这样的分配被定义为仅在变量的简单名称(或对于字段而言,其简单名称受其限定)出现在赋值运算符的左侧时才发生。[ §16 ]
这意味着在分配静态最终变量时必须使用“简单名称”,即没有任何限定符的var名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句