Java枚举的七种常见用法

来源:互联网 发布:淘宝怎么分期付款 编辑:程序博客网 时间:2024/05/23 15:09

Java枚举的七种常见用法

用法一:常量

在JDK1.5 之前,我们定义常量都是: public static fianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

1        public enum Color { 

2          RED, GREEN, BLANK, YELLOW 

3        }

用法二:switch

JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

4        enum Signal { 

5            GREEN, YELLOW, RED 

6        } 

7        public class TrafficLight{ 

8            Signal color = Signal.RED; 

9            public void change() { 

10            switch (color) { 

11            case RED: 

12                color = Signal.GREEN; 

13                break; 

14            case YELLOW: 

15                color = Signal.RED; 

16                break; 

17            case GREEN: 

18                color = Signal.YELLOW; 

19                break; 

20            } 

21        } 

22    }

用法三:向枚举中添加新方法

如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

23    public enum Color { 

24        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); 

25        // 成员变量 

26        private String name; 

27        private int index; 

28        // 构造方法 

29        private Color(String name, int index){ 

30            this.name = name; 

31            this.index = index; 

32        } 

33        // 普通方法 

34        public static String getName(int index){ 

35            for (Color c : Color.values()) { 

36                if (c.getIndex() == index) { 

37                    return c.name; 

38                } 

39            } 

40            return null; 

41        } 

42        // get set 方法 

43        public String getName() { 

44            return name; 

45        } 

46        public void setName(String name) { 

47            this.name = name; 

48        } 

49        public int getIndex() { 

50            return index; 

51        } 

52        public void setIndex(int index) { 

53            this.index = index; 

54        } 

55    }

用法四:覆盖枚举的方法

下面给出一个toString()方法覆盖的例子。

56    public enum Color { 

57        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); 

58        // 成员变量 

59        private String name; 

60        private int index; 

61        // 构造方法 

62        private Color(String name, int index){ 

63            this.name = name; 

64            this.index = index; 

65        } 

66        //覆盖方法 

67        @Override

68        public String toString() { 

69            returnthis.index+"_"+this.name; 

70        } 

71    }

用法五:实现接口

所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

72    public interface Behaviour{ 

73        void print(); 

74        String getInfo(); 

75    } 

76    public enum Color implementsBehaviour{ 

77        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); 

78        // 成员变量 

79        private String name; 

80        private int index; 

81        // 构造方法 

82        private Color(String name, int index){ 

83            this.name = name; 

84            this.index = index; 

85        } 

86    //接口方法 

87        @Override

88        public String getInfo() { 

89            return this.name; 

90        } 

91        //接口方法 

92        @Override

93        public void print() { 

94            System.out.println(this.index+":"+this.name); 

95        } 

96    }

用法六:使用接口组织枚举

97    public interface Food { 

98        enum Coffee implements Food{ 

99            BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO 

100     } 

101     enum Dessert implements Food{ 

102         FRUIT, CAKE, GELATO 

103     } 

104 }

用法七:关于枚举集合的使用

java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

 

原创粉丝点击