J2SE 5.0 (Tiger)的發布是java語言發展史上的一個重要的里程碑, 是迄今為止在 Java 編程方面所取得的最大進步.
J2SE 5.0提供了很多令人激動的特性.這些特性包括范型(generics)的支持, 枚舉類型(enumeration)的支持, 元數據(metadata)的支持, 自動拆箱(unboxing)/裝箱(autoboxing), 可變個數參數(varargs), 靜態導入(static imports), 以及新的線程架構(Thread framework).
隨著J2SE 5.0的推出, 越來越多的集成開發環境(IDE)支持J2SE 5.0的開發. 聞名的開源Java IDE Eclipse從3.1M4開始支持J2SE 5.0的開發, 目前最新的版本是3.1RC4.
本系列將介紹J2SE 5.0中三個比較重要的特性: 枚舉類型, 注釋類型, 范型, 并在此基礎上介紹在如何在Eclipse 3.1開發環境中開發枚舉類型, 注釋類型和范型應用.本文將介紹枚舉類型.
1. 枚舉類型
1.1枚舉類型簡介
J2SE 5.0 以及之前的JDK有兩種基本方法可以來定義新類型:通過Classes 以及Interface. 對于大部分面向對象編程來說,這兩種方法看起來似乎足夠了.但是在一些非凡情況下,這些方法就不適合.例如,我們想定義一個類型 PRiority, 它只能接受 High, Medium, Low 三種值. 其他任何值都是非法的.J2SE 5.0 以前的JDK是可以構造這種類型的,但是需要做很多工作,有可能會帶來如不安全(類型安全性問題???)等潛在問題,而J2SE 5.0的枚舉類型(Enum) 能避免這些問題.
Eclipse 是JAVA程序員最常用的開發平臺,而Eclipse 3.1提供對J2SE 5.0的支持,它為J2SE 5.0的新功能提供了幫助工具.在對枚舉類型的支持上,它不僅提供了枚舉類型的創建模板,而且為枚舉類型的各種開發錯誤提供錯誤提示及幫助修改.
本文首先介紹枚舉類型的創建基本概念以及如何在Eclipse 3.1平臺上創建枚舉類型,然后我們通過在Eclipse 3.1開發環境中的例子來說明枚舉類型的應用.
1.2 創建枚舉類型
下面的例子顯示了如何創建一個最基本的枚舉類型:
public enum Priority {High, Medium, Low };
它包括一個要害字enum ,一個新枚舉類型的名字 Priority 以及為Priority定義的一組值.
在Eclipse 3.1平臺上,按照下面步驟來生成枚舉類型:(Eclipse 3.1提供了一個新的枚舉類型創建向導(wizard)以方便用戶創建枚舉類型)
1) File->New->Other, 模板列表顯示出來.
2) 在模板列表上選中 Java->Enum, 點擊 Next 按鈕
3) 按圖 1填寫每一個域 如下:
圖 1: Eclipse 3.1 枚舉類型創建模板
4) 點擊 Finish 按鈕, 生成Priority 的類(定義???), 并聲明Priority 的每一個值,如下圖 2所示:(High, Medium, low從何而來???)
圖 2: 枚舉類型Priority
(點擊查看原圖)
在創建枚舉類型時,注重幾個重要的概念.
所有創建的枚舉類型都擴展于 java.lang.Enum. Enum 是在J2SE 5.0 里定義的一個新類, 它本身不是枚舉類型.在創建枚舉類型時,必須用enum 要害字,不能直接地定義一個繼續Enum的類來創建一個枚舉類型,盡管所有創建的枚舉類型實際上都是Enum 的子類. 假如直接繼續Enum, compiler 就會報錯(會導致編譯錯誤).如圖3 所示
圖3. 直接繼續Enum 類
(點擊查看原圖)
枚舉類型里定義的每一個值都是枚舉類型的一個實例,比方說High是Priority的一個實例.枚舉類型又是擴展于Enum. 所以枚舉類型的每一個值聲明時, 缺省時都將映射到Enum(String name, int ordinal) 構造函數中.換句話說,enum Priority {High, Medium, Low } 的實現是調用了下面的Enum 構造函數:
清單2 映射的構造函數調用 new Enum< Priority >("High", 0); new Enum< Priority >("Medium", 1); new Enum< Priority >("Low", 2);
新聞熱點
疑難解答