在實際編程中,往往存在著這樣的“數據集”,它們的數值在程序中是穩定的,而且“數據集”中的元素是有限的。
例如星期一到星期日七個數據元素組成了一周的“數據集”,春夏秋冬四個數據元素組成了四季的“數據集”。
在java中如何更好的使用這些“數據集”呢?因此枚舉便派上了用場,以下代碼詳細介紹了枚舉的用法。
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; } /** * 枚舉像普通的類一樣可以添加屬性和方法,可以為它添加靜態和非靜態的屬性或方法 * * @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; } } /** * 性別 * * 實現帶有構造器的枚舉 * * @author jiqinlin * */ public enum Gender{ //通過括號賦值,而且必須帶有一個參構造器和一個屬性跟方法,否則編譯出錯 //賦值必須都賦值或都不賦值,不能一部分賦值一部分不賦值;如果不賦值則不能寫構造器,賦值編譯也出錯 MAN( "MAN" ), WOMEN( "WOMEN" ); private final String value; //構造器默認也只能是private, 從而保證構造函數只能在內部使用 Gender(String value) { this .value = value; } public String getValue() { return value; } } /** * 訂單狀態 * * 實現帶有抽象方法的枚舉 * * @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 "正在配貨" ;}}, /** 等待發貨 */ WAITDELIVER { public String getName(){ return "等待發貨" ;}}, /** 已發貨 */ DELIVERED { public String getName(){ return "已發貨" ;}}, /** 已收貨 */ 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); } //獲取枚舉的個數 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 //枚舉默認實現了java.lang.Comparable接口 System.out.println(ColorEnum.red.compareTo(ColorEnum.green)); //-1 //-------------------------- System.out.println( "===========" ); System.err.println( "季節為" + 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()); } } } |