这段代码:
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的哪个版本中发生了变化?
这段代码:
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" 关键字声明访问修饰符。
接口变量
默认为静态
和常量
,因为Java接口本身不能被实例化。
使用interface关键字声明接口,接口只能包含方法签名和常量声明(变量声明同时为静态和常量)。接口永远不可能包含方法定义。
接口变量是静态的,因为Java接口本身无法实例化。变量的值必须在静态上下文中分配 - 不存在实例。final修饰符确保分配给接口变量的值是真正的常量,不能被程序代码重新分配。
public static final
可能更实用,尽管每个IDE都将其标记为冗余信息,这听起来很奇怪。implements
,而从类继承使用extends
)