一个枚举类型的典型例子:
public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE};
实际上,这个声明定义的类型是一个类,它刚好有 4 个实例,不可能构造新的对象。
因此,在比较两个枚举类型的值时,并不需要调用 equals,直接使用 “==” 就可以了。
如果需要的话,可以为枚举类型增加构造器、方法和字段。当然,构造器只是在构造枚举常量的时候调用。下面是一个示例:
enum Size{
SMALL("S", 0), MEDIUM("M", 1), LARGE("L", 2), EXTRA_LARGE("XL", 3);
private String abbreviation;
private int index;
private Size(String abbreviation, int index) {
this.abbreviation = abbreviation;
this.index = index;
}
public String getAbbreviation() {
return abbreviation;
}
public void setAbbreviation(String abbreviation) {
this.abbreviation = abbreviation;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
public class Testing {
public static void main(String[] args) {
Size size = Enum.valueOf(Size.class, "EXTRA_LARGE");
System.out.println("Size = " + size.toString());
System.out.println("abbreviation = " + size.getAbbreviation());
System.out.println("index = " + size.getIndex());
System.out.println("ordinal = " + size.ordinal());
if(size == Size.EXTRA_LARGE) {
System.out.println("Good job you paid attention to the _.");
}
}
}
输出:
Size = EXTRA_LARGE
abbreviation = XL
index = 4
ordinal = 3
Good job you paid attention to the _.
枚举的构造器总是私有的。可以省略 private 修饰符。如果声明一个 enum 构造器为 public 和 protected,会出现语法错误。
所有的枚举类型都是 Enum 类的子类。它们继承了这个类的许多方法。其中最有用的一个是 toString,这个方法会返回枚举常量名。例如,Size.SMALL.toString()
将返回字符串 “SMALL”。
toString 的逆方法是静态方法 valueOf。 例如,语句:
Size s = Enum.valueOf(Size.class, "SMALL");
将 s 设置成 Size.SMALL。
每个枚举类型都有一个静态的 values 方法,它将返回一个包含全部枚举值的数组。
Size[] arr = Size.values();
System.out.println(Arrays.toString(arr));
打印:
[SMALL, MEDIUM, LARGE, EXTRA_LARGE]
ordinal 方法返冋 enum 声明中枚举常量的位置,位置从 0 开始计数。例如:Size.MEDIUM.ordinal()
返回 1。
注释: Enum 类有一个类型参数,不过为了简单起见省略了这个类型参数。例如,实际上枚举类型 Size 扩展了 Enum<Size>
。类型参数会在 compareTo 方法中使用。
java.long.Enmu<E> 5.0
- static Enmu valueOf(Calss enumClass, String name)
返回给定类中指明名字的枚举常量。
- String toString()
返回枚举常量名。
- int ordinal()
返回枚举常量在 enum 声明中的位置,位置从 0 开始计数。
- int compareTo(E other)
如果枚举常量出现在 other 之前,则返回一个负值;如果 this==other,则返回 0;否则,返回正整数。枚举常量的出现次序在 enum 声明中给出。