java语言中,用关键字enum来定义一个枚举类。枚举可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final,可以通过枚举类型名直接使用它们。
这些类都继承了类库中的Enum类,可以调用自带的很多方法。我们可以向enum中添加方法,甚至是main()方法。
public enum EnumState {
A, B, C
}
public class TestDemo {
public static void main(String args[]){
TestDemo test=new TestDemo();
test.doAction(EnumState.A);
test.doAction(EnumState.B);
test.doAction(EnumState.C);
}
//执行的动作
public void doAction(EnumState action) {
switch (action) {
case A:
System.out.println("第一步");
break;
case B:
System.out.println("第二步");
break;
case C:
System.out.println("第三步");
break;
default:
System.out.println("默认操作!");
break;
}
}
}
所有枚举类都继承了Enum的方法:
(1) ordinal()方法: 返回枚举值在枚举类种的顺序。这个顺序根据枚举值声明的顺序而定。
Color.A.ordinal(); //返回结果:0
Color.B.ordinal(); //返回结果:1
(2) compareTo()方法: Enum实现了java.lang.Comparable接口,因此可以比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。 Color.A.compareTo(Color.B); //返回结果 -1
(3) values()方法: 静态方法,返回一个包含全部枚举值的数组。
EnumState[] states=EnumState.values();
for(EnumState s:states){
System.out.print(s+",");
}//返回结果:A,B,C
(4) toString()方法: 返回枚举常量的名称。
EnumState s=EnumState.A;
System.out.println(s);//返回结果: A
(5) valueOf()方法: 这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量。
EnumState.valueOf("B"); //返回结果: Color.B
(6) equals()方法: 比较两个枚举类对象的引用。