Direction d = Direction.FRONT;
switch(d) {
case FRONT: System.out.println("前面");break;
case BEHIND:System.out.println("后面");break;
case LEFT: System.out.println("左面");break;
case RIGHT: System.out.println("右面");break;
default:System.out.println("错误的方向");
}
Direction d1 = d;
System.out.println(d1);
注意,在switch中,不能使用枚举类名称,例如:“case Direction.FRONT:”这是错误的,因为编译器根据switch中d的类型决定了case中的类型必须为哪种类型。java规定case后面的枚举常量名只能使用unqualified name,switch后已经指定了枚举的类型,case后无需使用全名
所有枚举类都是Enum的子类
所有枚举类都默认是Enum类的子类,无需我们使用extends来继承。这说明Enum中的方法所有枚举类都可以的。
int compareTo(E e):比较两个枚举常量谁大谁小,其实比较的就是枚举常量在枚举类中声明的顺序,例如FRONT的下标为0,BEHIND下标为1,那么FRONT小于BEHIND;
boolean equals(Object o):比较两个枚举常量是否相等;
int hashCode():返回枚举常量的hashCode;
String name():返回枚举常量的名字;
int ordinal():返回枚举常量在枚举类中声明的序号,第一个枚举常量序号为0;
String toString():把枚举常量转换成字符串;
static T valueOf(Class enumType, String name):把字符串转换成枚举常量。
枚举类的构造器
枚举类也可以有构造器,构造器不能给出访问修饰,而且默认都是private构造器。因为枚举类的实例不能让外界来创建!
enum Direction {
FRONT, BEHIND, LEFT, RIGHT
Direction(){
System.out.println("hello");
}
}
[枚举常量后面必须添加分号,因为在枚举常量后面还有其他成员时,分号是必须的。
枚举常量必须在枚举类中所有成员的上方声明];
[举类的构造器不可以添加访问修饰符,枚举类的构造器默认是private的。但你自己不能添加private来修饰构造器。]