1. 程式人生 > >Java 列舉(enum) 詳解7種常見的用法(轉)

Java 列舉(enum) 詳解7種常見的用法(轉)

原文:https://blog.csdn.net/qq_27093465/article/details/52180865

JDK1.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. 相關推薦

    Java 列舉(enum) 7常見用法

    JDK1.5引入了新的型別——列舉。在 Java 中它雖然算個“小”功能,卻給我的開發帶來了“大”方便。 大師兄我又加上自己的理解,來幫助各位理解一下。 用法一:常量 在JDK1.5 之前,我們定義常量都是: public static final.... 。現在好

    Java 列舉(enum) 7常見用法

    原文:https://blog.csdn.net/qq_27093465/article/details/52180865JDK1.5引入了新的型別——列舉。在 Java 中它雖然算個“小”功能,卻給我的開發帶來了“大”方便。大師兄我又加上自己的理解,來幫助各位理解一下。用法

    java列舉(enum)

           一.為什麼要使用列舉.             需求:定義一個Employee(員工),使用一個變數restday來表示他哪一天休息.如圖:                                                       

    Java 列舉 enum

    > 本文部分摘自 On Java 8 ## 列舉型別 Java5 中添加了一個 enum 關鍵字,通過 enum 關鍵字,我們可以將一組擁有具名的值的有限集合建立為一種新的型別,這些具名的值可以作為常規的程式元件使用,例如: ```java public enum Spiciness {

    Java集合框架--Collection介面簡單介紹

    一、Collection介面簡單介紹        Collection介面是處理物件集合的根介面,其中定義了很多對元素進行操作的方法。Collection介面有兩個主要的子介面List和Set,注意Map不是Collection的子介面。 Collection介面中的方

    Spring Boot配置檔案-ConfigurationProperties和Value優缺點-好文

    文章轉自 http://www.cnblogs.com/itdragon/p/8686554.html Spring Boot提供了兩種常用的配置檔案,分別是properties檔案和yml檔案。他們的作用都是修改Spring Boot自動配置的預設值。相對於properties檔案而言,yml檔

    javascript 面向物件的幾常見寫法

    //定義Circle類,擁有成員變數r,常量PI和計算面積的成員函式area()  文章轉自:http://www.iteye.com/topic/434462 1.工廠方式 var Circle = function() { var obj = new Object

    AppCrawler自動化遍歷使用(版本2.1.0 )

    AppCrawle是自動遍歷的app爬蟲工具,最大的特點是靈活性,實現:對整個APP的所有可點選元素進行遍歷點選。   優點: 1.支援android和iOS, 支援真機和模擬器 2.可通過配置來設定遍歷的規則(比如設定黑名單和白名單,提高遍歷的覆蓋率)

    C++中列舉enum

    轉載部落格地址:https://blog.csdn.net/bruce_0712/article/details/54984371     眾所周知,C/C++語言可以使用#define和const建立符號常量,而使用enum工具不僅能夠建立符號常量,還能定義新

    Java執行緒(7)-執行緒的排程

    Java執行緒:執行緒的排程-休眠         Java執行緒排程是Java多執行緒的核心,只有良好的排程,才能充分發揮系統的效能,提高程式的執行效率。         這裡要明確的一點,不管程式設計師怎麼編寫排程,只能最大限度的影響執行緒執行的次序,而不能做到精準控

    Java列舉型別(原理+用法)

    可以這麼說,Java的列舉型別本來是不存在的,但Java發了個"語法糖",就有了列舉型別。Java從JDK1.5開始支援列舉,通常一個特性如果在一開始沒有提供,在語言發展後期才新增,會遇到一個問題,就是向後相容性的問題。像Java在1.5中引入的很多特性,為了向後相容,編譯

    EL表示式常見用法 EL表示式常見用法

    原 EL表示式常見用法詳解 2017年02月02日 17:33:21 LiQiyaoo 閱讀數:32634 <

    位運算及競賽常見用法入門

    位運算 程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算說穿了,就是直接對整數在記憶體中的二進位制位進行操作。比如,and運算本來是一個邏輯運算子,但整數與整數之間也可以進行and運算。舉個例子,6的二進位制是110,11的二進位制是1011,那麼6 an

    OSI七層之四 傳輸層Transport

    http 計算機 地址 包括 分組 tcp aik 全部 滿足 一、簡介   第四層的數據單元也稱作數據包(packets)。但是,當你談論TCP等具體的協議時又有特殊的叫法,TCP的數據單元稱為段(segments)而UDP協議的數據單元稱為“數據報(datagrams)

    javascript 中的比較==和===

    不一致 mit 如果 asc onu tin 算法 復雜 undefine 抽象相等比較算法 比較運算 x==y, 其中 x 和 y 是值,產生 true 或者 false。這樣的比較按如下方式進行: 若 Type(x) 與 Type(y) 相同, 則 若 Type(x)

    串口驅動程序設計---串口初始化

    flag more ini board 幾分鐘 cor configure 設計 rom 串口驅動程序設計詳解---串口初始化(上) 原創 2016年05月19日 23:51:13 標簽: 串口驅動初始化流程 / 內核源碼分析 / linux / ARM / 架構

    C#特性和反射

    typeinfo ref 都是 system.in 全局 color com 依然 程序   類型信息(Type Information)用來表示類型聲明的信息,通過抽象基類System.Type的實例存儲這些信息,當使用反射時,CLR獲取指定類型的Type對象,通過這個對

    通過,認識遞迴recursion

    首先先對遞迴進行入門。 遞迴是以自相似的方式重複專案的過程。在程式語言中,如果程式允許您在同一函式內呼叫函式,則稱其為函式的遞迴呼叫。 簡而言之,遞迴就是函式的自身呼叫。可以看看下面的遞迴使用: void Recursive() { Recursive();//call itself

    gh0st遠控原始碼圖文Gh0st通訊協議解析1

    與大家分享下gh0st通訊的全過程解析。瞭解gh0st的通訊上線發包全過程,網上有很多相關資料,自己在總結了下。希望對初學者有幫助少走彎路,gh0st的核心是個不錯的經典值得學習。轉載請註明: 速維網路 Gh0st通訊協議解析(1)  gh0st遠控原始碼釋出至今已有不少

    C#委託和事件

      一、當我們使用關鍵字delegate宣告一個自定義委託型別時,實際上是聲明瞭一個該名稱的類型別,繼承自抽象類System.MulticastDelegate,還包含例項方法Invoke、BeginInvoke、EndInvoke:   public delegate void MyDelegate