枚举enum

在JDK1.5 之前,我们定义常量都是: public static final .... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
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	        return   this .index+ "_" + this .name;  
70	    }  
71	}  
用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
72	public   interface  Behaviour {  
73	    void  print();  
74	    String getInfo();  
75	}  
76	public   enum  Color  implements  Behaviour{  
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	}  
枚举(switch、向枚举中添加新的方法、覆盖枚举、实现接口、接口做组织枚举)
用法七:关于枚举集合的使用
java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。
关于枚举的实现细节和原理请参考:
参考资料:《ThinkingInJava》第四版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值