Java接口中的常量的“公共静态最终”是否多余?
问题内容:
这段代码:
interface Config {
int MAX_CONN = 20;
}
编译并按预期工作。看起来这与以下内容相同:
interface Config {
public static final int MAX_CONN = 20;
}
Java接口中的常量的“公共静态最终”是否多余?Java 1.1、1.2、1.3、1.4,…,1.8是否适用于Java,或者在Java版本中已更改?
问题答案:
在Interface中声明的变量是隐式的public static final
。这就是JLS
9.3
所说的:
接口主体中的每个字段声明都是隐式的 public,static和final 。可以为此类字段多余地指定任何或所有这些修饰符。
通读JLS以了解执行此操作的原因。
看看这个SO答案:
接口变量是静态的,因为不能单独实例化Java接口。必须在没有实例的静态上下文中分配变量的值。final修饰符确保分配给接口变量的值是一个真正的常量,不能由程序代码重新分配。