用法一:常量
在jdk1.5 之前,我們定義常量都是: public static fianl…. 。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類型裡,而且枚舉提供了比常量更多的方法。
1
2
3
<code>public</code>
<code>enum</code> <code>color {</code>
<code> </code><code>red, green, blank, yellow</code>
<code> </code><code>}</code>
用法二:switch
jdk1.6之前的switch語句隻支援int,char,enum類型,使用枚舉,能讓我們的代碼可讀性更強。
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<code>enum</code>
<code>signal {</code>
<code> </code><code>green, yellow, red</code>
<code>}</code>
<code>class</code> <code>trafficlight {</code>
<code> </code><code>signal color = signal.red;</code>
<code> </code><code>public</code>
<code>void</code> <code>change() {</code>
<code> </code><code>switch</code>
<code>(color) {</code>
<code> </code><code>case</code>
<code>red:</code>
<code> </code><code>color = signal.green;</code>
<code> </code><code>break</code><code>;</code>
<code>yellow:</code>
<code> </code><code>color = signal.red;</code>
<code>green:</code>
<code> </code><code>color = signal.yellow;</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
用法三:向枚舉中添加新方法
如果打算自定義自己的方法,那麼必須在enum執行個體序列的最後添加一個分号。而且 java 要求必須先定義 enum執行個體。
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<code> //red("紅色", 1)是根據構造方法來的,按照構造方法的參數類型,個數,可以自定義</code>
<code> </code><code>red(</code><code>"紅色"</code><code>,</code><code>1</code><code>), green(</code><code>"綠色"</code><code>,</code><code>2</code><code>), blank(</code><code>"白色"</code><code>,</code><code>3</code><code>), yello(</code><code>"黃色"</code><code>,</code><code>4</code><code>);</code>
<code> </code><code>// 成員變量</code>
<code> </code><code>private</code>
<code>string name;</code>
<code>int</code> <code>index;</code>
<code> </code><code>// 構造方法</code>
<code>color(string name,</code><code>int</code>
<code>index) {</code>
<code> </code><code>this</code><code>.name = name;</code>
<code> </code><code>this</code><code>.index = index;</code>
<code> </code><code>// 普通方法</code>
<code>static</code> <code>string getname(</code><code>int</code>
<code> </code><code>for</code>
<code>(color c : color.values()) {</code>
<code> </code><code>if</code>
<code>(c.getindex() == index) {</code>
<code> </code><code>return</code>
<code>c.name;</code>
<code> </code><code>}</code>
<code> </code><code>return</code>
<code>null</code><code>;</code>
<code> </code><code>// get set 方法</code>
<code>string getname() {</code>
<code>name;</code>
<code>void</code> <code>setname(string name) {</code>
<code>int</code> <code>getindex() {</code>
<code>index;</code>
<code>void</code> <code>setindex(</code><code>int</code>
用法四:覆寫枚舉的方法
下面給出一個tostring()方法覆寫的例子。
<code> </code><code>//覆寫方法</code>
<code> </code><code>@override</code>
<code>string tostring() {</code>
<code>this</code><code>.index+</code><code>"_"</code><code>+</code><code>this</code><code>.name;</code>
用法五:實作接口
所有的枚舉都繼承自java.lang.enum類。由于java 不支援多繼承,是以枚舉對象不能再繼承其他類。
<code>interface</code> <code>behaviour {</code>
<code> </code><code>void</code>
<code>print();</code>
<code> </code><code>string getinfo();</code>
<code>enum</code> <code>color</code><code>implements</code>
<code>behaviour{</code>
<code>//接口方法</code>
<code>string getinfo() {</code>
<code>this</code><code>.name;</code>
<code> </code><code>//接口方法</code>
<code>void</code> <code>print() {</code>
<code> </code><code>system.out.println(</code><code>this</code><code>.index+</code><code>":"</code><code>+</code><code>this</code><code>.name);</code>
用法六:使用接口組織枚舉
<code>interface</code> <code>food {</code>
<code> </code><code>enum</code>
<code>coffee</code><code>implements</code>
<code>food{</code>
<code> </code><code>black_coffee,decaf_coffee,latte,cappuccino</code>
<code>dessert</code><code>implements</code>
<code> </code><code>fruit, cake, gelato</code>
用法七:關于枚舉集合的使用
java.util.enumset和java.util.enummap是兩個枚舉集合。enumset保證集合中的元素不重複;enummap中的key是enum類型,而value則可以是任意類型。關于這個兩個集合的使用就不在這裡贅述,可以參考jdk文檔。