用法一:常量
Java代码
11 public enum Color { 22 RED, GREEN, BLANK, YELLOW 33 }
用法二:switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
Java代码
1 1 enum Signal { 2 2 GREEN, YELLOW, RED 3 3 } 4 4 public class TrafficLight { 5 5 Signal color = Signal.RED; 6 6 public void change() { 7 7 switch (color) { 8 8 case RED: 9 9 color = Signal.GREEN; 1010 break; 1111 case YELLOW: 1212 color = Signal.RED; 1313 break; 1414 case GREEN: 1515 color = Signal.YELLOW; 1616 break; 1717 } 1818 } 1919 }
用法三:向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。
Java代码
1 1 public enum Color { 2 2 RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); 3 3 // 成员变量 4 4 private String name; 5 5 private int index; 6 6 // 构造方法 7 7 private Color(String name, int index) { 8 8 this.name = name; 9 9 this.index = index; 1010 } 1111 // 普通方法 1212 public static String getName(int index) { 1313 for (Color c : Color.values()) { 1414 if (c.getIndex() == index) { 1515 return c.name; 1616 } 1717 } 1818 return null; 1919 } 2020 // get set 方法 2121 public String getName() { 2222 return name; 2323 } 2424 public void setName(String name) { 2525 this.name = name; 2626 } 2727 public int getIndex() { 2828 return index; 2929 } 3030 public void setIndex(int index) { 3131 this.index = index; 3232 } 3333 }
用法四:覆盖枚举的方法
下面给出一个toString()方法覆盖的例子。
Java代码
1 1 public enum Color { 2 2 RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); 3 3 // 成员变量 4 4 private String name; 5 5 private int index; 6 6 // 构造方法 7 7 private Color(String name, int index) { 8 8 this.name = name; 9 9 this.index = index; 1010 } 1111 //覆盖方法 1212 @Override 1313 public String toString() { 1414 return this.index+"_"+this.name; 1515 } 1616 }
用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
Java代码
1 1 public interface Behaviour { 2 2 void print(); 3 3 String getInfo(); 4 4 } 5 5 public enum Color implements Behaviour{ 6 6 RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); 7 7 // 成员变量 8 8 private String name; 9 9 private int index; 1010 // 构造方法 1111 private Color(String name, int index) { 1212 this.name = name; 1313 this.index = index; 1414 } 1515 //接口方法 1616 @Override 1717 public String getInfo() { 1818 return this.name; 1919 } 2020 //接口方法 2121 @Override 2222 public void print() { 2323 System.out.println(this.index+":"+this.name); 2424 } 2525 }
用法六:使用接口组织枚举
Java代码
11 public interface Food { 22 enum Coffee implements Food{ 33 BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO 44 } 55 enum Dessert implements Food{ 66 FRUIT, CAKE, GELATO 77 } 88 } 9 10 1 /** 11 2 * 测试继承接口的枚举的使用(by 大师兄 or 大湿胸。) 12 3 */ 13 4 private static void testImplementsInterface() { 14 5 for (Food.DessertEnum dessertEnum : Food.DessertEnum.values()) { 15 6 System.out.print(dessertEnum + " "); 16 7 } 17 8 System.out.println(); 18 9 //我这地方这么写,是因为我在自己测试的时候,把这个coffee单独到一个文件去实现那个food接口,而不是在那个接口的内部。 1910 for (CoffeeEnum coffee : CoffeeEnum.values()) { 2011 System.out.print(coffee + " "); 2112 } 2213 System.out.println(); 2314 //搞个实现接口,来组织枚举,简单讲,就是分类吧。如果大量使用枚举的话,这么干,在写代码的时候,就很方便调用啦。 2415 //还有就是个“多态”的功能吧, 2516 Food food = Food.DessertEnum.CAKE; 2617 System.out.println(food); 2718 food = CoffeeEnum.BLACK_COFFEE; 2819 System.out.println(food); 2920 }