这段代码:
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 版本中发生了变化?
接口:系统需求服务。
在接口中,变量默认由 public、static、final 访问修饰符分配。因为 :
public :有时接口可能会放在其他包中。所以它需要从项目中的任何地方访问变量。
static :这样不完整的类不能创建对象。所以在项目中我们需要访问没有对象的变量,这样我们就可以在
interface_filename.variable_name
final :假设一个接口由多个类实现,并且所有类都尝试访问和更新接口变量。因此它会导致数据变化不一致并影响其他所有类。所以需要用final声明访问修饰符。
接口variables
是隐式的 static
,final
因为 Java 接口不能自己实例化。
接口使用 interface 关键字声明,并且只能包含方法签名和常量声明(声明为 static 和 final 的变量声明)。接口可能永远不会包含方法定义。
接口变量是静态的,因为 Java 接口不能单独实例化。变量的值必须在静态上下文中分配 - 不存在实例。final修饰符确保分配给接口变量的值是一个真正的常量,程序代码不能重新分配。
接口变量始终是静态的和最终的。
但是,如果interface
必须将 重构为一个类,则保留冗余可能更实际public static final
。(这听起来很奇怪,因为每个 IDE 都将它们标记为冗余信息)。
编辑公平地说:如果不更改许多其他地方,就不会这样做(因为接口正在使用implements
,同时从类继承使用extends
)
EDIT#2事实上,常量接口可以被认为是一种反模式,请参阅维基百科 - 常量接口