gpt4 book ai didi

java编译报错取决于静态变量名是否合格?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:51 25 4
gpt4 key购买 nike

为什么这个java程序不能编译:

public class xx {
public static final Object obj;
static {
// obj = null; // this compiles
xx.obj = null; // this doesn't
}
}

出现此错误:

$ javac xx.java
xx.java:5: cannot assign a value to final variable obj
xx.obj = null; // this doesn't
^
1 error
$ javac -version
javac 1.6.0_33

如果我将 xx.obj = null 替换为 obj = null(如评论中提到的),它会编译。

我认为 xx. 类名前缀或多或少只是语法...这是编译器或语言规范中的错误吗? :)

最佳答案

当您执行xx.obj 时,这意味着该类已经初始化。所以final obj不能再初始化了。这是一个编译时错误。编译器可能已经检查过 obj 尚未初始化。很难检查这一点,但理论上是可能的。但这不是 Java 编译器的工作方式。

关于java编译报错取决于静态变量名是否合格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11705814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com