亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java枚舉怎么用

發布時間:2021-08-30 11:49:33 來源:億速云 閱讀:143 作者:小新 欄目:編程語言

這篇文章主要介紹了java枚舉怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一.枚舉和靜態常量區別

講到枚舉我們首先思考,它和public static final String 修飾的常量有什么不同。

我舉枚舉的兩個優點:

1. 保證了類型安全:調用者無法隨意傳一個 int或者String 等值;

2.代碼可讀性非常高;

舉個例子:

在實際編程中,往往存在著這樣的“數據集”,它們的數值在程序中是穩定的,而且“數據集”中的元素是有限的。例如春夏秋冬四個數據元素組成了四季的“數據集”。

你寫了方法get(String season),輸入的類型只能是String類型,同時要String只能是(春、夏。秋。冬)。

這個時候。你寫四個字符串常量

public class Common {
  public static final String SPRING="春";
  public static final String SEASON="夏";
  public static final String SUMMER="秋";
  public static final String AUTUMN="冬";
}

在get方法里放入get(Common.SEASON),確實是把"春",放進去了,但是這個時候你會發現這里面有一個隱患,你get(String season),畢竟放入的是String類型的,如果新同事或者不知情的同事,不知道這個方法里只能放“春、夏、秋、冬”,它放了個其期它字符串比如get("小小“),這個時候,在編譯期它是不會報錯的,只有運行之后,才發現錯了。

為了防止上面的隱患,枚舉出現了

  public enum Season {
    SPRING("春"),
    SUMMER("夏"),
    AUTUMN("秋"),
    WINTER("冬");
  .....
}

這個時候,我們修改get方法的傳參,改成get(Season   season)   這個時候加入get(Season.SPRING),這就能保證傳入的參數只能是這幾個。

二.理解枚舉

首要我們要明確,其實枚舉也是個class類,我寫個枚舉來理解。

//我們把枚舉當做一個普通類
public enum Season {
  SPRING(1,"春"),
  SUMMER(2,"夏" ),
  AUTUMN(3,"秋" ),
  WINTER(4,"冬"); //這里最后一個一定要分號,否則報錯
  
  /*我們可以理解成
   *public static final Season SPRING = new Season(1,春); 
   *public static final Season SUMMER = new Season(2,夏); 
   *public static final Season AUTUMN = new Season(3,秋); 
   *public static final Season WINTER = new Season(4,冬); 
   *既然是對象,那下面就很好理解了
   */  
  /*
   * 1.上面對象里放了兩個參數,那下面就肯定要有這個類型的構造函數
   * 2.這里是private,因為不能在被new對象了
   */
  private Season(int code,String name) {
    this.name = name;
    this.code = code;
  }
  //對象的屬性
  private String name;
  private int code;
  //獲取對象屬性的方法
  public String getName() {
    return this.name;
  }
  public String getCode() {
    return this.name;
  }
  //通過code獲得對象,我們就可以獲得對象的其它屬性
  public static Season decode(int code) {
    Season season = null;
    for (Season type : Season.values()) {
      if (type.code==code) {
        season = type;
        break;
      }
    }
    return season;
  }
  //重新toString方法
  public String toString() {
    return this.name;
  }
}

上面這個例子,就很好解釋了枚舉,它和普通類沒什么區別,只是用另一種寫法創建了幾個有屬性的對象,這也必須寫這樣有屬性的構造函數,僅此而已。

這里順便列舉下枚舉的一些特點:

1.它不能有public的構造函數,這樣做可以保證客戶代碼沒有辦法新建一個enum的實例。 
2.  枚舉不能在繼承其它類了,因為它默認繼承了java.lang.Enum 
3.  常量值地址唯一,可以用==直接對比,性能會有提高. 
4.Enum還提供了values方法,這個方法使你能夠方便的遍歷所有的枚舉值。 
5.Enum還有一個oridinal的方法,這個方法返回枚舉值在枚舉類種的順序,這個順序根據枚舉值聲明的順序而定。

三.枚舉的常見用法

第一種:switch運用

先建一個枚舉:

public enum Common {
  INSERT,
  MODIFY,
  DELETE
}
//因為這里是無參的對象,所以可以用系統默認的構造函數。也不用寫屬性和方法。

在寫實現代碼

public class CommonUtils {

  public static void getType(Common common){
    Common c=common;
    switch(c)
    {
    case INSERT:
      System.out.println("進行插入操作");
      break;
    case MODIFY:
      System.out.println("進行修改操作");
      break;
    case DELETE:
      System.out.println("進行刪除操作");
      break;
    }  
    
  }
  public static void main(String[] args) {
    getType(Common.DELETE); //后臺輸出:進行刪除操作
  }
}

第二種用法,通過key值獲得value值獲取其它值

枚舉類

public enum Season {
  SPRING(1,"春","春天放風箏"),
  SUMMER(2,"夏","夏天去游泳"),
  AUTUMN(3,"秋","秋天去秋游"),
  WINTER(4,"冬","冬天吃火鍋"); 
  
  private Season(int code,String name,String bz) {
    this.code = code;
    this.name = name;
    this.bz=bz;
  }
  private int code;
  private String name;
  private String bz;
  public static Season decode(int code) {
    Season season = null;
    for (Season type : Season.values()) {
      if (type.code==code) {
        season = type;
        break;
      }
    }
    return season;
  }
  public int getCode() {
    return code;
  }
  public String getName() {
    return name;
  }
  public String getBz() {
    return bz;
  }

}

測試類

java枚舉怎么用

感謝你能夠認真閱讀完這篇文章,希望小編分享的“java枚舉怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

介休市| 婺源县| 依兰县| 台前县| 手游| 清涧县| 若尔盖县| 宣汉县| 潼南县| 桦甸市| 兴海县| 仙桃市| 介休市| 普宁市| 灵寿县| 乡城县| 乌拉特后旗| 西乌| 长子县| 浪卡子县| 松溪县| 璧山县| 遵义县| 长武县| 冷水江市| 南丹县| 高青县| 五河县| 临湘市| 来凤县| 南靖县| 莆田市| 南皮县| 余庆县| 霍邱县| 栾城县| 佛冈县| 繁峙县| 邵东县| 吐鲁番市| 高青县|