在實際編程中,往往存在著這樣的“數(shù)據(jù)集”,它們的數(shù)值在程序中是穩(wěn)定的,而且“數(shù)據(jù)集”中的元素是有限的。
例如星期一到星期日七個數(shù)據(jù)元素組成了一周的“數(shù)據(jù)集”,春夏秋冬四個數(shù)據(jù)元素組成了四季的“數(shù)據(jù)集”。
在java中如何更好的使用這些“數(shù)據(jù)集”呢?因此枚舉便派上了用場,以下代碼詳細介紹了枚舉的用法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
package com.ljq.test; /** * 枚舉用法詳解 * * @author jiqinlin * */ public class TestEnum { /** * 普通枚舉 * * @author jiqinlin * */ public enum ColorEnum { red, green, yellow, blue; } /** * 枚舉像普通的類一樣可以添加屬性和方法,可以為它添加靜態(tài)和非靜態(tài)的屬性或方法 * * @author jiqinlin * */ public enum SeasonEnum { //注:枚舉寫在最前面,否則編譯出錯 spring, summer, autumn, winter; private final static String position = "test" ; public static SeasonEnum getSeason() { if ( "test" .equals(position)) return spring; else return winter; } } /** * 性別 * * 實現(xiàn)帶有構(gòu)造器的枚舉 * * @author jiqinlin * */ public enum Gender{ //通過括號賦值,而且必須帶有一個參構(gòu)造器和一個屬性跟方法,否則編譯出錯 //賦值必須都賦值或都不賦值,不能一部分賦值一部分不賦值;如果不賦值則不能寫構(gòu)造器,賦值編譯也出錯 MAN( "MAN" ), WOMEN( "WOMEN" ); private final String value; //構(gòu)造器默認也只能是private, 從而保證構(gòu)造函數(shù)只能在內(nèi)部使用 Gender(String value) { this .value = value; } public String getValue() { return value; } } /** * 訂單狀態(tài) * * 實現(xiàn)帶有抽象方法的枚舉 * * @author jiqinlin * */ public enum OrderState { /** 已取消 */ CANCEL { public String getName(){ return "已取消" ;}}, /** 待審核 */ WAITCONFIRM { public String getName(){ return "待審核" ;}}, /** 等待付款 */ WAITPAYMENT { public String getName(){ return "等待付款" ;}}, /** 正在配貨 */ ADMEASUREPRODUCT { public String getName(){ return "正在配貨" ;}}, /** 等待發(fā)貨 */ WAITDELIVER { public String getName(){ return "等待發(fā)貨" ;}}, /** 已發(fā)貨 */ DELIVERED { public String getName(){ return "已發(fā)貨" ;}}, /** 已收貨 */ RECEIVED { public String getName(){ return "已收貨" ;}}; public abstract String getName(); } public static void main(String[] args) { //枚舉是一種類型,用于定義變量,以限制變量的賦值;賦值時通過“枚舉名.值”取得枚舉中的值 ColorEnum colorEnum = ColorEnum.blue; switch (colorEnum) { case red: System.out.println( "color is red" ); break ; case green: System.out.println( "color is green" ); break ; case yellow: System.out.println( "color is yellow" ); break ; case blue: System.out.println( "color is blue" ); break ; } //遍歷枚舉 System.out.println( "遍歷ColorEnum枚舉中的值" ); for (ColorEnum color : ColorEnum.values()){ System.out.println(color); } //獲取枚舉的個數(shù) System.out.println( "ColorEnum枚舉中的值有" +ColorEnum.values().length+ "個" ); //獲取枚舉的索引位置,默認從0開始 System.out.println(ColorEnum.red.ordinal()); //0 System.out.println(ColorEnum.green.ordinal()); //1 System.out.println(ColorEnum.yellow.ordinal()); //2 System.out.println(ColorEnum.blue.ordinal()); //3 //枚舉默認實現(xiàn)了java.lang.Comparable接口 System.out.println(ColorEnum.red.compareTo(ColorEnum.green)); //-1 //-------------------------- System.out.println( "===========" ); System.err.println( "季節(jié)為" + SeasonEnum.getSeason()); //-------------- System.out.println( "===========" ); for (Gender gender : Gender.values()){ System.out.println(gender.value); } //-------------- System.out.println( "===========" ); for (OrderState order : OrderState.values()){ System.out.println(order.getName()); } } } |