站長資訊網
        最全最豐富的資訊網站

        JAVA 枚舉(enum)詳解

        JAVA 枚舉(enum)詳解

        Java 枚舉是一個特殊的類,一般表示一組常量,比如一年的 4 個季節,一個年的 12 個月份,一個星期的 7 天,方向有東南西北等。

        Java 枚舉類使用 enum 關鍵字來定義,各個常量使用逗號 , 來分割。

        例如定義一個顏色的枚舉類。

        enum Color  {    RED, GREEN, BLUE;  }

        以上枚舉類 Color 顏色常量有 RED, GREEN, BLUE,分別表示紅色,綠色,藍色。

        使用實例:

        enum Color {   RED, GREEN, BLUE; }   public class Test {   // 執行輸出結果   public static void main(String[] args)   {     Color c1 = Color.RED;     System.out.println(c1);   } }

        執行以上代碼輸出結果為:

        RED

        內部類中使用枚舉

        枚舉類也可以聲明在內部類中:

        public class Test {   enum Color   {     RED, GREEN, BLUE;   }     // 執行輸出結果   public static void main(String[] args)   {     Color c1 = Color.RED;     System.out.println(c1);   } }

        執行以上代碼輸出結果為:

        RED

        每個枚舉都是通過 Class 在內部實現的,且所有的枚舉值都是 public static final 的。

        以上的枚舉類 Color 轉化在內部類實現:

        class Color {    public static final Color RED = new Color();    public static final Color BLUE = new Color();    public static final Color GREEN = new Color(); }

        迭代枚舉元素

        可以使用 for 語句來迭代枚舉元素:

        enum Color {   RED, GREEN, BLUE; } public class MyClass {  public static void main(String[] args) {   for (Color myVar : Color.values()) {    System.out.println(myVar);   }  } }

        執行以上代碼輸出結果為:

        RED
        GREEN
        BLUE

        在 switch 中使用枚舉類

        枚舉類常應用于 switch 語句中:

        enum Color {   RED, GREEN, BLUE; } public class MyClass {  public static void main(String[] args) {   Color myVar = Color.BLUE;    switch(myVar) {    case RED:     System.out.println("紅色");     break;    case GREEN:      System.out.println("綠色");     break;    case BLUE:     System.out.println("藍色");     break;   }  } }

        執行以上代碼輸出結果為:

        藍色

        values(), ordinal() 和 valueOf() 方法

        enum 定義的枚舉類默認繼承了 java.lang.Enum 類,并實現了 java.lang.Seriablizable 和 java.lang.Comparable 兩個接口。

        values(), ordinal() 和 valueOf() 方法位于 java.lang.Enum 類中:

        • values() 返回枚舉類中所有的值。
        • ordinal()方法可以找到每個枚舉常量的索引,就像數組索引一樣。
        • valueOf()方法返回指定字符串值的枚舉常量。
        enum Color {   RED, GREEN, BLUE; }   public class Test {   public static void main(String[] args)   {     // 調用 values()     Color arr[] = Color.values();       // 迭代枚舉     for (Color col : arr)     {       // 查看索引       System.out.println(col + " at index " + col.ordinal());     }       // 使用 valueOf() 返回枚舉常量,不存在的會報錯 IllegalArgumentException     System.out.println(Color.valueOf("RED"));     // System.out.println(Color.valueOf("WHITE"));   } }

        執行以上代碼輸出結果為:

        RED at index 0
        GREEN at index 1
        BLUE at index 2
        RED

        枚舉類成員

        枚舉跟普通類一樣可以用自己的變量、方法和構造函數,構造函數只能使用 private 訪問修飾符,所以外部無法調用。

        枚舉既可以包含具體方法,也可以包含抽象方法。 如果枚舉類具有抽象方法,則枚舉類的每個實例都必須實現它。

        enum Color {   RED, GREEN, BLUE;     // 構造函數   private Color()   {     System.out.println("Constructor called for : " + this.toString());   }     public void colorInfo()   {     System.out.println("Universal Color");   } }   public class Test {     // 輸出   public static void main(String[] args)   {     Color c1 = Color.RED;     System.out.println(c1);     c1.colorInfo();   } }

        執行以上代碼輸出結果為:

        Constructor called for : RED
        Constructor called for : GREEN
        Constructor called for : BLUE
        RED
        Universal Color

        推薦教程:《Java教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲AV午夜福利精品一区二区| 精品一区二区三区中文字幕| 久久精品国产精品亚洲艾草网美妙 | A级精品国产片在线观看| 久久精品国产亚洲Aⅴ蜜臀色欲| 欧美视频精品一区二区三区| 亚洲综合一区二区精品导航| 日韩精品无码一区二区中文字幕| 国产伦精品一区二区免费| 国产精品电影在线观看| 国产A√精品区二区三区四区| 国产成人精品高清在线观看93| 一本一本久久a久久精品综合麻豆| 国内精品久久人妻互换| 日韩精品一区二区三区中文字幕| 国产精品自在线拍国产第一页| 亚洲国产精品欧美日韩一区二区 | 久久久久人妻一区精品色| 蜜臀精品国产高清在线观看| 国产精品无码素人福利| 国产精品嫩草影院久久| 真实国产精品vr专区| 久久噜噜久久久精品66| 国产精品99久久精品爆乳| 精品亚洲欧美高清不卡高清| 国产精品视频永久免费播放| 性欧洲精品videos| 亚洲麻豆精品国偷自产在线91| 久久久久这里只有精品| 日本熟妇亚洲欧美精品区| 麻豆精品三级全部视频| 香港aa三级久久三级老师2021国产三级精品三级在 | 亚洲AV无码久久精品狠狠爱浪潮| 一本色道久久88—综合亚洲精品| 亚洲国产精品专区在线观看| 亚洲精品人成无码中文毛片| 中文字幕在线亚洲精品| 四虎国产成人永久精品免费| 国产亚洲精品自在久久| 成人久久精品一区二区三区| 色综合久久综精品|