在 java 中,枚举类型是一种特殊数据类型,能够为一个变量定义一组预定义的常量。变量必须等于为其预定义的值之一。
定义枚举类型
下面是一个典型的例子:
public enum Size {
SMALL, MEDIUM, LARGE, EXTRA_LARGE
}
实际上,这个声明定义的类型是一个类,它刚好有 4 个实例,在此尽量不要构造新对象。
因此,在比较两个枚举类型的值时,永远不需要调用 equals,而直接使用“==”就可以了。
如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器只是在构造枚举常量的时候被调用。下面是一个示例:
public enum Size {
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private String abbreviation;
Size(String abbreviation) {
this.abbreviation = abbreviation;
}
public String getAbbreviation() {
return abbreviation;
}
}
所有的枚举类型都是 Enum 类的子类。它们继承了这个类的许多方法。其中最有用的一个是 toString,这个方法能够返回枚举常量名。例如,Size.SMALL.toString() 将返回字符串“SMALL”。
toString 的逆方法是静态方法 valueOf。例如,语句:
Size s = Enum.valueOf(Size.class, "SMALL");
将 s 设置成 Size.SMALL。
每个枚举类型都有一个静态的 values 方法,它将返回一个包含全部枚举值的数组。例如,如下调用:
Size[] values = Size.values();
返回包含元素 Size.SMALL,Size.MEDIUM,Size.LARGE,Size.EXTRA_LARGE 的数组。
ordinal 方法返冋 enum 声明中枚举常量的位置,位置从 0 开始计数。例如:Size.MEDIUM.ordinal() 返回 1。
java.lang.Enum api
描述 |
---|
public final int compareTo(E o) 比较此枚举与指定对象的顺序。 |
public final String name() 返回此枚举常量的名称,在其枚举声明中对其进行声明。 |
public final int ordinal() 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。 |
public String toString() 返回枚举常量的名称,它包含在声明中。 |