Java編程枚舉類實戰代碼分享,java編程枚舉實戰

來源:互聯網
上載者:User

Java編程枚舉類實戰代碼分享,java編程枚舉實戰

本文句句走心,希望老鐵們用心閱讀並實戰,一定會有收穫的。

摘要:本文主要討論生產環境中枚舉類的使用。首先會通過對枚舉類概念進行簡單的介紹,引入我們討論的主題;然後就直接進入實戰部分,本文只會介紹在實戰中用的比較多,也比較常用的情況,所以希望老鐵可以用心體會並實踐,最終化為己有;最後會大致在對枚舉的 API 做了一個簡單的介紹。其餘沒有介紹的內容,基本上在我們的生產環境中極少用到,如果有興趣的可以自己在深入研究。

枚舉

概念:枚舉類型是 Java 5 中新增特性的一部分,它是一種特殊的資料類型,它的特點就是使我們的代碼更加簡潔,安全,從某種程度來說,使我們可以站在全域的角度更加清晰的理解商務邏輯(比如說一個訂單的狀態被我們定義成了枚舉類之後,我們不用看商務邏輯代碼,只需要從這個枚舉類中都可以瞭解到我們這個訂單的所有狀態,給我們一種全域觀的印象在腦海中,更利於後期代碼的梳理。)

定義:首先使用 enum 來定義一個枚舉類;然後每個枚舉值(即聲明的枚舉)是使用逗號隔開,如果枚舉值後面還有作業碼,那麼在最後一個枚舉值後面加上分號結尾;最後一定要記住,枚舉類中聲明的每一個值都是一個執行個體,也就是說有 n 個枚舉值,建構函式就被調用 n 次來建立出 n 個枚舉執行個體。這裡舉一個小例子看看:

enum SeasonType {  SPRING, SUMMER, AUTUMN, WINTER;  SeasonType() {    System.out.println("看看此建構函式被調用了幾次");  }}public class Season {  public static void main(String[] args) {    System.out.println(SeasonType.SPRING);  }}

控制台輸出:

看看此建構函式被調用了幾次看看此建構函式被調用了幾次看看此建構函式被調用了幾次看看此建構函式被調用了幾次SPRING

總結: 從這裡可以看出來,枚舉類中聲明的每一枚舉值其實都調用了建構函式並建立了執行個體,簡單理解就是: 每一個枚舉值都是一個執行個體對象。

實戰一無參

(1)定義一個無參枚舉類

enum SeasonType {  SPRING, SUMMER, AUTUMN, WINTER}

(2)實戰中的使用

// 根據實際情況選擇下面的用法即可SeasonType springType = SeasonType.SPRING;  // 輸出 SPRING String springString = SeasonType.SPRING.toString();  // 輸出 SPRING

實戰二有一參

(1)定義只有一個參數的枚舉類

enum SeasonType {  // 通過建構函式傳遞參數並建立執行個體  SPRING("spring"),  SUMMER("summer"),  AUTUMN("autumn"),  WINTER("winter");  // 定義執行個體對應的參數  private String msg;  // 必寫:通過此構造器給枚舉值建立執行個體  SeasonType(String msg) {    this.msg = msg;  }  // 通過此方法可以擷取到對應執行個體的參數值  public String getMsg() {    return msg;  }}

(2)實戰中的使用

// 當我們為某個執行個體類賦值的時候可使用如下方式String msg = SeasonType.SPRING.getMsg();  // 輸出 spring

實戰三有兩參

(1)定義有兩個參數的枚舉類

public enum Season {  // 通過建構函式傳遞參數並建立執行個體  SPRING(1, "spring"),  SUMMER(2, "summer"),  AUTUMN(3, "autumn"),  WINTER(4, "winter");  // 定義執行個體對應的參數  private Integer key;  private String msg;  // 必寫:通過此構造器給枚舉值建立執行個體  Season(Integer key, String msg) {    this.key = key;    this.msg = msg;  }  // 很多情況,我們可能從前端拿到的值是枚舉類的 key ,然後就可以通過以下靜態方法擷取到對應枚舉值  public static Season valueofKey(Integer key) {    for (Season season : Season.values()) {      if (season.key.equals(key)) {        return season;      }    }    throw new IllegalArgumentException("No element matches " + key);  }  // 通過此方法可以擷取到對應執行個體的 key 值  public Integer getKey() {    return key;  }  // 通過此方法可以擷取到對應執行個體的 msg 值  public String getMsg() {    return msg;  }}

(2)實戰中的使用

// 輸出 key 為 1 的枚舉值執行個體Season season = Season.valueofKey(1);// 輸出 SPRING 執行個體對應的 keyInteger key = Season.SPRING.getKey();// 輸出 SPRING 執行個體對應的 msgString msg = Season.SPRING.getMsg();

枚舉類總結

其實枚舉類懂了其概念後,枚舉就變得相當簡單了,隨手就可以寫一個枚舉類出來。所以如上幾個實戰小例子一定要先搞清楚概念,然後在練習幾遍就 ok 了。重要的概念,我在這裡在贅述一遍,協助老鐵們快速掌握這塊知識,首先記住,枚舉類中的枚舉值可以沒有參數,也可以有多個參數,每一個枚舉值都是一個執行個體;並且還有一點很重要,就是如果枚舉值有 n 個參數,那麼建構函式中的參數值肯定有 n 個,因為聲明的每一個枚舉值都會調用建構函式去建立執行個體,所以參數一定是一一對應的;既然明白了這一點,那麼我們只需要在枚舉類中把這 n 個參數定義為 n 個成員變數,然後提供對應的 get() 方法,之後通過執行個體就可以隨意的擷取執行個體中的任意參數值了。如果想讓枚舉類更加的好用,就可以模仿我在實戰三中的寫法那樣,通過某一個參數值,比如 key 參數值,就能擷取到其對應的枚舉值,然後想要什麼值,就 get 什麼值就好了。

枚舉 API

我們使用 enum 定義的枚舉類都是繼承 java.lang.Enum 類的,那麼就會繼承其 API ,常用的 API 如下:

String name()

擷取枚舉名稱

int ordinal()

擷取枚舉的位置(下標,初始值為 0 )

valueof(String msg)

通過 msg 擷取其對應的枚舉類型。(比如實戰二中的枚舉類或其它枚舉類都行,只要使用得當都可以使用此方法)

values()

擷取枚舉類中的所有枚舉值(比如在實戰三中就使用到了)

總結

以上就是本文關於Java編程枚舉類實戰代碼分享的全部內容,希望對大家有所協助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支援!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.