这段代码:
interface Config {
int MAX_CONN = 20;
}
编译和按我的预期工作。它看起来像是:
interface Config {
public static final int MAX_CONN = 20;
}
对于Java接口中的常量,“public static final”是多余的吗?这对于Java 1.1,1.2,1.3,1.4,...,1.8是否适用,或者是否在Java版本中进行了更改?
接口variables
隐式地是static
和final
,因为Java接口不能自己实例化。
接口使用interface关键字声明,并且可能只包含方法签名和常量声明(声明为静态和最终的变量声明)。接口可能永远不会包含方法定义。
接口变量是静态的,因为Java接口本身无法实例化。必须在静态上下文中分配变量的值 - 不存在实例。最终修饰符确保分配给接口变量的值是一个真正的常量,不能由程序代码重新赋值。
接口变量始终是静态的和最终的。
如果interface
必须被重构为一个类,那么保持冗余的public static final
可能更实际。 (这听起来很奇怪,因为每个IDE都会将这些标记为冗余信息)。
编辑公平:如果没有改变很多其他地方就不会这样做(因为接口使用implements
,而继承自类使用extends
)
编辑#2事实上,常量接口可以被认为是反模式,请参阅wikipedia - Constant Interface