<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Chan Chen Coding...

    Java 枚舉7常見種用法

    DK1.5引入了新的類型——枚舉。在 Java 中它雖然算個“小”功能,卻給我的開發帶來了“大”方便。

    用法一:常量

    JDK1.5 之前,我們定義常量都是: public static fianl.... 。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類型里,而且枚舉提供了比常量更多的方法。

     

    Java代碼  收藏代碼
    1. public enum Color {  
    2.   RED, GREEN, BLANK, YELLOW  
    3. }  
     

    用法二:switch

    JDK1.6之前的switch語句只支持int,char,enum類型,使用枚舉,能讓我們的代碼可讀性更強。

     

    Java代碼  收藏代碼
    1. enum Signal {  
    2.     GREEN, YELLOW, RED  
    3. }  
    4. public class TrafficLight {  
    5.     Signal color = Signal.RED;  
    6.     public void change() {  
    7.         switch (color) {  
    8.         case RED:  
    9.             color = Signal.GREEN;  
    10.             break;  
    11.         case YELLOW:  
    12.             color = Signal.RED;  
    13.             break;  
    14.         case GREEN:  
    15.             color = Signal.YELLOW;  
    16.             break;  
    17.         }  
    18.     }  
    19. }  
     

    用法三:向枚舉中添加新方法

    如果打算自定義自己的方法,那么必須在enum實例序列的最后添加一個分號。而且 Java 要求必須先定義 enum實例。

     

    Java代碼  收藏代碼
    1. public enum Color {  
    2.     RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);  
    3.     // 成員變量  
    4.     private String name;  
    5.     private int index;  
    6.     // 構造方法  
    7.     private Color(String name, int index) {  
    8.         this.name = name;  
    9.         this.index = index;  
    10.     }  
    11.     // 普通方法  
    12.     public static String getName(int index) {  
    13.         for (Color c : Color.values()) {  
    14.             if (c.getIndex() == index) {  
    15.                 return c.name;  
    16.             }  
    17.         }  
    18.         return null;  
    19.     }  
    20.     // get set 方法  
    21.     public String getName() {  
    22.         return name;  
    23.     }  
    24.     public void setName(String name) {  
    25.         this.name = name;  
    26.     }  
    27.     public int getIndex() {  
    28.         return index;  
    29.     }  
    30.     public void setIndex(int index) {  
    31.         this.index = index;  
    32.     }  
    33. }  
     

    用法四:覆蓋枚舉的方法

    下面給出一個toString()方法覆蓋的例子。

     

    Java代碼  收藏代碼
    1. public enum Color {  
    2.     RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);  
    3.     // 成員變量  
    4.     private String name;  
    5.     private int index;  
    6.     // 構造方法  
    7.     private Color(String name, int index) {  
    8.         this.name = name;  
    9.         this.index = index;  
    10.     }  
    11.     //覆蓋方法  
    12.     @Override  
    13.     public String toString() {  
    14.         return this.index+"_"+this.name;  
    15.     }  
    16. }  
     

    用法五:實現接口

    所有的枚舉都繼承自java.lang.Enum類。由于Java 不支持多繼承,所以枚舉對象不能再繼承其他類。

     

    Java代碼  收藏代碼
    1. public interface Behaviour {  
    2.     void print();  
    3.     String getInfo();  
    4. }  
    5. public enum Color implements Behaviour{  
    6.     RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);  
    7.     // 成員變量  
    8.     private String name;  
    9.     private int index;  
    10.     // 構造方法  
    11.     private Color(String name, int index) {  
    12.         this.name = name;  
    13.         this.index = index;  
    14.     }  
    15. //接口方法  
    16.     @Override  
    17.     public String getInfo() {  
    18.         return this.name;  
    19.     }  
    20.     //接口方法  
    21.     @Override  
    22.     public void print() {  
    23.         System.out.println(this.index+":"+this.name);  
    24.     }  
    25. }  
     

    用法六:使用接口組織枚舉

     

    Java代碼  收藏代碼
    1. public interface Food {  
    2.     enum Coffee implements Food{  
    3.         BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
    4.     }  
    5.     enum Dessert implements Food{  
    6.         FRUIT, CAKE, GELATO  
    7.     }  
    8. }  
     

    用法七:關于枚舉集合的使用

    java.util.EnumSet和java.util.EnumMap是兩個枚舉集合。EnumSet保證集合中的元素不重復;EnumMap中的key是enum類型,而value則可以是任意類型。關于這個兩個集合的使用就不在這里贅述,可以參考JDK文檔。

    關于枚舉的實現細節和原理請參考:



    -----------------------------------------------------
    Silence, the way to avoid many problems;
    Smile, the way to solve many problems;

    posted on 2013-05-15 19:57 Chan Chen 閱讀(248) 評論(0)  編輯  收藏 所屬分類: Scala / Java

    主站蜘蛛池模板: 中文字幕免费在线| 久久成人免费电影| 午夜免费福利在线观看| 亚洲天堂男人影院| 成人免费在线视频| 亚洲精品无码中文久久字幕| 成年女人看片免费视频播放器| 亚洲中文字幕无码爆乳| 日韩免费观看视频| 男人扒开添女人下部免费视频| 免费人成在线观看网站品爱网日本| 免费高清A级毛片在线播放| 亚洲第一区精品观看| 一出一进一爽一粗一大视频免费的| 精品国产香蕉伊思人在线在线亚洲一区二区| 国产伦精品一区二区免费| 国产亚洲高清不卡在线观看| 亚洲国产精品免费在线观看| 亚洲三级高清免费| 亚洲成?v人片天堂网无码| 成全视频免费观看在线看| 亚洲精品乱码久久久久久下载 | 无码专区永久免费AV网站| 一区二区亚洲精品精华液| 又粗又硬免费毛片| 久操免费在线观看| 亚洲色无码国产精品网站可下载| 日本成人在线免费观看| 久久九九免费高清视频| 亚洲精品美女在线观看播放| 免费国产成人高清在线观看麻豆 | av无码东京热亚洲男人的天堂| 精品免费久久久久国产一区| 久久久亚洲精品视频| 在线播放高清国语自产拍免费| 91av免费在线视频| 亚洲自国产拍揄拍| 亚洲一区二区三区无码中文字幕| 在线观看成人免费视频不卡| 成人午夜免费视频| 亚洲av无码久久忘忧草|