代码行完全没问题,并且没有真正的问题,因为变量是 和 。final
static
也许做出该评论的人对以下内容感到困惑。
在 Java 中,当您创建类型的变量(例如,它也适用于其他一些类型)时,编译器可能会在使用该变量的位置替换实际的常量值,而不是对变量的引用。例如,假设您有以下各项:public final static
int
class A {
public final static int VALUE = 3;
}
public class B {
public static void main(String[] args) {
System.out.println(A.VALUE);
}
}
当你编译并运行这个时,它显然会打印3。
现在假设您更改了类并设置了 .你会期望,如果你重新编译类,然后运行类(不重新编译类),你会看到。但是发生的事情是,您仍然会看到.这是因为在编译类 时,in 类被替换为实际的常量值。A
VALUE = 4
A
B
B
4
3
A.VALUE
B
3
B
这是 Java 编译器对常量所做的优化。
如您所见,如果类的公共 API 中有此类常量,这可能会导致问题。如果更改此类常量的值,则代码的用户必须重新编译其代码。
但是在您在问题中发布的代码中,这不是问题,因为变量是.private
更多详情:
Java 语言规范 13.4.9