生活随笔
收集整理的這篇文章主要介紹了
【转】Java 枚举7常见种用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文網址:http://softbeta.iteye.com/blog/1185573
Java 枚舉7常見種用法
博客分類: java枚舉enmu?
原創地址:http://blog.lichengwu.cn/java/2011/09/26/the-usage-of-enum-in-java/
?
JDK1.5引入了新的類型——枚舉。在?Java?中它雖然算個“小”功能,卻給我的開發帶來了“大”方便。
用法一:常量
在JDK1.5?之前,我們定義常量都是:?public static fianl....?。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類型里,而且枚舉提供了比常量更多的方法。
?
Java代碼??
public?enum?Color?{????RED,?GREEN,?BLANK,?YELLOW??}?? ?
用法二:switch
JDK1.6之前的switch語句只支持int,char,enum類型,使用枚舉,能讓我們的代碼可讀性更強。
?
Java代碼??
enum?Signal?{??????GREEN,?YELLOW,?RED??}??public?class?TrafficLight?{??????Signal?color?=?Signal.RED;??????public?void?change()?{??????????switch?(color)?{??????????case?RED:??????????????color?=?Signal.GREEN;??????????????break;??????????case?YELLOW:??????????????color?=?Signal.RED;??????????????break;??????????case?GREEN:??????????????color?=?Signal.YELLOW;??????????????break;??????????}??????}??}?? ?
用法三:向枚舉中添加新方法
如果打算自定義自己的方法,那么必須在enum實例序列的最后添加一個分號。而且?Java?要求必須先定義?enum實例。
?
Java代碼??
public?enum?Color?{??????RED("紅色",?1),?GREEN("綠色",?2),?BLANK("白色",?3),?YELLO("黃色",?4);??????????private?String?name;??????private?int?index;??????????private?Color(String?name,?int?index)?{??????????this.name?=?name;??????????this.index?=?index;??????}??????????public?static?String?getName(int?index)?{??????????for?(Color?c?:?Color.values())?{??????????????if?(c.getIndex()?==?index)?{??????????????????return?c.name;??????????????}??????????}??????????return?null;??????}??????????public?String?getName()?{??????????return?name;??????}??????public?void?setName(String?name)?{??????????this.name?=?name;??????}??????public?int?getIndex()?{??????????return?index;??????}??????public?void?setIndex(int?index)?{??????????this.index?=?index;??????}??}?? ?
用法四:覆蓋枚舉的方法
下面給出一個toString()方法覆蓋的例子。
?
Java代碼??
public?enum?Color?{??????RED("紅色",?1),?GREEN("綠色",?2),?BLANK("白色",?3),?YELLO("黃色",?4);??????????private?String?name;??????private?int?index;??????????private?Color(String?name,?int?index)?{??????????this.name?=?name;??????????this.index?=?index;??????}??????????@Override??????public?String?toString()?{??????????return?this.index+"_"+this.name;??????}??}?? ?
用法五:實現接口
所有的枚舉都繼承自java.lang.Enum類。由于Java?不支持多繼承,所以枚舉對象不能再繼承其他類。
?
Java代碼??
public?interface?Behaviour?{??????void?print();??????String?getInfo();??}??public?enum?Color?implements?Behaviour{??????RED("紅色",?1),?GREEN("綠色",?2),?BLANK("白色",?3),?YELLO("黃色",?4);??????????private?String?name;??????private?int?index;??????????private?Color(String?name,?int?index)?{??????????this.name?=?name;??????????this.index?=?index;??????}??????@Override??????public?String?getInfo()?{??????????return?this.name;??????}??????????@Override??????public?void?print()?{??????????System.out.println(this.index+":"+this.name);??????}??}?? ?
用法六:使用接口組織枚舉
?
Java代碼??
public?interface?Food?{??????enum?Coffee?implements?Food{??????????BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO??????}??????enum?Dessert?implements?Food{??????????FRUIT,?CAKE,?GELATO??????}??}?? ?
用法七:關于枚舉集合的使用
java.util.EnumSet和java.util.EnumMap是兩個枚舉集合。EnumSet保證集合中的元素不重復;EnumMap中的key是enum類型,而value則可以是任意類型。關于這個兩個集合的使用就不在這里贅述,可以參考JDK文檔。
關于枚舉的實現細節和原理請參考:
參考資料:《ThinkingInJava》第四版
轉載于:https://www.cnblogs.com/wi100sh/p/4473524.html
總結
以上是生活随笔為你收集整理的【转】Java 枚举7常见种用法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。