我们总是写:
public static final int A = 0;
Run Code Online (Sandbox Code Playgroud)
题:
static final
声明常量的唯一方法吗? public final int A = 0;
,A
仍然是一个常量或只是一个实例字段? Pet*_*ren 62
final
表示初始化后无法更改该值,这就是使其成为常量的原因.static
意味着不是为每个对象中的字段分配空间,而是只为该类创建一个实例.
因此,static final
无论创建了多少个对象,并且该变量的值永远不会改变,因此只表示变量的一个实例.
Oh *_*oon 38
enum
在Java 5及更高版本中使用类型,以实现您所描述的目的.它是类型安全的.如果您正在讨论实例变量和类变量之间的区别,则每个创建的对象都存在实例变量.而类变量每个类加载器只有一个副本,而不管创建的对象数是多少.
Java 5的和最多enum
型
public enum Color{
RED("Red"), GREEN("Green");
private Color(String color){
this.color = color;
}
private String color;
public String getColor(){
return this.color;
}
public String toString(){
return this.color;
}
}
Run Code Online (Sandbox Code Playgroud)
如果要更改已创建的枚举的值,请提供mutator方法.
public enum Color{
RED("Red"), GREEN("Green");
private Color(String color){
this.color = color;
}
private String color;
public String getColor(){
return this.color;
}
public void setColor(String color){
this.color = color;
}
public String toString(){
return this.color;
}
}
Run Code Online (Sandbox Code Playgroud)
访问示例:
public static void main(String args[]){
System.out.println(Color.RED.getColor());
// or
System.out.println(Color.GREEN);
}
Run Code Online (Sandbox Code Playgroud)