java中枚举类的使用详解
1 /* 2 * 通过JDK5提供的枚举来做枚举类 3 */ 4 public enum Direction2 { 5 FRONT("前"), BEHIND("后"), LEFT("左"), RIGHT("右"); 6 7 private String name; 8 9 private Direction2(String name) { 10 this.name = name; 11 } 12 13 public String getName() { 14 return name; 15 } 16 17 }
//-------------------------
//测试类,每一个对象都是被枚举类放进了数组中,自带索引值。
枚举类: 格式是:只有枚举项的枚举类
public enum 枚举类名 {
枚举项1,枚举项2,枚举项3…;
}
注意事项
•定义枚举类要用关键字enum
•所有枚举类都是Enum的子类
•枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
•枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(“”);
•枚举类也可以有抽象方法,但是枚举项必须重写该方法,使用匿名内部类的方式。
•枚举在switch语句中的使用
1 public class EnumMethodDemo { 2 public static void main(String[] args) { 3 // int compareTo(E o) 4 Direction2 d21 = Direction2.FRONT; 5 Direction2 d22 = Direction2.BEHIND; 6 Direction2 d23 = Direction2.LEFT; 7 Direction2 d24 = Direction2.RIGHT; 8 System.out.println(d21.compareTo(d21)); 9 System.out.println(d21.compareTo(d24)); 10 System.out.println(d24.compareTo(d21)); 11 System.out.println("---------------"); 12 // String name() 13 System.out.println(d21.name()); 14 System.out.println(d22.name()); 15 System.out.println(d23.name()); 16 System.out.println(d24.name()); 17 System.out.println("--------------"); 18 // int ordinal() 19 System.out.println(d21.ordinal()); 20 System.out.println(d22.ordinal()); 21 System.out.println(d23.ordinal()); 22 System.out.println(d24.ordinal()); 23 System.out.println("--------------"); 24 // String toString() 25 System.out.println(d21.toString()); 26 System.out.println(d22.toString()); 27 System.out.println(d23.toString()); 28 System.out.println(d24.toString()); 29 System.out.println("--------------"); 30 // <T> T valueOf(Class<T> type,String name) 31 Direction2 d = Enum.valueOf(Direction2.class, "FRONT"); 32 System.out.println(d.getName()); 33 System.out.println("----------------"); 34 // values() 35 // 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便 36 Direction2[] dirs = Direction2.values(); 37 for (Direction2 d2 : dirs) { 38 System.out.println(d2); 39 System.out.println(d2.getName()); 40 } 41 } 42 }
//----------------------
//下面贴一个使用匿名内部类创建枚举对象实例的demo
1 /* 2 * 通过JDK5提供的枚举来做枚举类 3 */ 4 public enum Direction3 { 5 FRONT("前") { 6 @Override 7 public void show() { 8 System.out.println("前"); 9 } 10 }, 11 BEHIND("后") { 12 @Override 13 public void show() { 14 System.out.println("后"); 15 } 16 }, 17 LEFT("左") { 18 @Override 19 public void show() { 20 System.out.println("左"); 21 } 22 }, 23 RIGHT("右") { 24 @Override 25 public void show() { 26 System.out.println("右"); 27 } 28 }; 29 30 private String name; 31 32 private Direction3(String name) { 33 this.name = name; 34 } 35 36 public String getName() { 37 return name; 38 } 39 40 public abstract void show(); 41 }
//----------------
//在switch语句中可以直接只用
switch (dd) {
case FRONT:
System.out.println("你选择了前");
break;
case BEHIND:
System.out.println("你选择了后");
break;
case LEFT:
System.out.println("你选择了左");
break;
case RIGHT:
System.out.println("你选择了右");
break;
}
开始在code,我的个人特色。