java 中枚舉類型的用法

來源:互聯網
上載者:User

枚舉是Java 5開始支援的新特性,其作用是將一組相關的常量定義在一個類型中,這樣在使用時就只能使用這些有限的常量。先定義一個代表一周七天的枚舉類型作為範例: Java代碼   enum Weekday {        SUNDAY, MONDAY, TUESDAY, WEDNSDAY, THURSDAY, FRIDAY, SATURDAY    };  

enum Weekday {    SUNDAY, MONDAY, TUESDAY, WEDNSDAY, THURSDAY, FRIDAY, SATURDAY};

這樣就定義好了一個Weekday枚舉類型,注意最後的分號是可以省略的。因為Weekday中只有7個成員,所以Weekday的變數只能取其中一個值,例如: Java代碼   Weekday wd = Weekday.MONDAY;  

Weekday wd = Weekday.MONDAY;

 

這樣看起來枚舉類型似乎很簡單,其實它本質上是一個類,其隱含的父類是java.lang.Enum,所以Weekday自動繼承了Enum的方法,其中有兩個挺有用,一個叫ordinal(),返回成員的聲明順序編號,這是一個整數,值從0開始編號,比如Weekday.SUNDAY.ordinal()返回0,而Weekday.MONDAY.ordinal()返回1。另一個方法叫做name(),返回枚舉成員的名稱。

更有意思的是,枚舉類型可以直接用於switch語句,這個功能看起來是突破了Java中switch只能用於整數和字元的限制,不過其實是Java編譯器的障眼法,Java編譯器會自動在枚舉成員上調用ordinal()方法,例如: Java代碼   Weekday wd = Weekday.FRIDAY;    switch (wd) {    case MONDAY:         System.out.println("這個星期才剛開始,慢慢等吧");         break;    ...    case FRIDAY:         System.out.println("周末來了,好好享受吧");         break;    ...    }  

Weekday wd = Weekday.FRIDAY;switch (wd) {case MONDAY:     System.out.println("這個星期才剛開始,慢慢等吧");     break;...case FRIDAY:     System.out.println("周末來了,好好享受吧");     break;...}

如果像遍曆Weekday,那麼可以使用它隱含的靜態方法values(),這個方法在文檔中找不到定義,是Java編譯器自己加上去的,很奇怪。 例如: Java代碼   for (Weekday wd : Weekday.values()) {        System.out.println(wd + ", 順序: " + wd.ordinal());    }  

for (Weekday wd : Weekday.values()) {    System.out.println(wd + ", 順序: " + wd.ordinal());}

以上是枚舉的基本用法,實際上枚舉本身要複雜的多,比如可以定義建構函式,定義欄位,定義和重寫方法,甚至可以在枚舉的常量中重寫枚舉中的方法,這些內容將在下一篇文章中介紹。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.