亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

深入學習java枚舉的應用

2024-07-13 10:17:12
字體:
來源:轉載
供稿:網友

一.枚舉和靜態常量區別

講到枚舉我們首先思考,它和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,枚舉,應用

好了,就寫這么多,以后有需要會更深入了解。感謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产综合视频在线观看| 欧美激情视频免费观看| 欧美成人精品影院| 欧美成人午夜免费视在线看片| 亚洲欧美激情另类校园| 日韩精品久久久久久久玫瑰园| 成人免费网站在线观看| 亚洲性视频网站| 97久久精品人搡人人玩| xxxxx91麻豆| 黄色一区二区在线| 91久久精品美女| 国产精品入口福利| 欧美最猛黑人xxxx黑人猛叫黄| 国产亚洲精品va在线观看| 蜜臀久久99精品久久久久久宅男| 精品日韩美女的视频高清| 国产精品久久久久久久久免费看| 青青在线视频一区二区三区| 久久久人成影片一区二区三区观看| 日韩av在线网| 国产欧美韩国高清| 国产成人综合一区二区三区| 欧美成aaa人片在线观看蜜臀| 91在线免费看网站| 欧美性猛交xxxx免费看久久久| 久久人人爽人人爽人人片av高清| 2021久久精品国产99国产精品| 欧美国产日韩一区二区三区| 欧美午夜视频一区二区| 国产精品久久综合av爱欲tv| 久久国产精品久久久| 伊人久久久久久久久久久| 国产精品夜间视频香蕉| 亚洲乱码国产乱码精品精| 国产精品毛片a∨一区二区三区|国| 亚洲精品美女在线观看播放| 国产精品综合不卡av| 久久九九免费视频| 一区二区三区四区在线观看视频| 国产精品视频成人| 欧美成人精品在线视频| 欧美极品少妇与黑人| 亚洲尤物视频网| 欧美日韩一二三四五区| 91免费高清视频| 亚洲男人第一网站| 日韩免费视频在线观看| 欧美大尺度激情区在线播放| 97视频免费在线看| 欧美午夜久久久| 久久久久久成人| 中文字幕亚洲精品| 国产精品久久视频| 91久久精品美女| 91在线视频成人| 国产精品永久免费视频| 日韩毛片中文字幕| 久久精品一本久久99精品| 国产成人精品999| 伦伦影院午夜日韩欧美限制| 国产成人欧美在线观看| 欧美成年人视频网站欧美| 国产日韩精品视频| 国产乱肥老妇国产一区二| 国产精品成人一区二区三区吃奶| 欧美黑人国产人伦爽爽爽| 精品国产999| 国产精品成人aaaaa网站| 国产日韩欧美影视| 亚洲国产精品久久久久秋霞不卡| 国产精品中文字幕在线| 欧美一级视频免费在线观看| 55夜色66夜色国产精品视频| 亚洲精品自产拍| 亚洲精品videossex少妇| 69av视频在线播放| 68精品久久久久久欧美| 国产在线观看91精品一区| 亚洲成成品网站| 国产+成+人+亚洲欧洲| 日韩av在线直播| 国产成人高潮免费观看精品| 不卡av电影在线观看| 久久视频中文字幕| 国产精选久久久久久| 国产成人一区二区| 日韩精品在线播放| 日产日韩在线亚洲欧美| 久久91亚洲精品中文字幕| 亚洲黄页网在线观看| 韩国精品久久久999| 美女啪啪无遮挡免费久久网站| 97精品久久久| 国产日本欧美一区二区三区在线| 亚洲国产精品网站| 美女精品久久久| 久久久久久国产三级电影| 精品一区精品二区| 日韩视频在线免费| 久久久久久国产精品美女| 久久久久www| 亚洲欧美日韩精品久久奇米色影视| 欧美专区日韩视频| 欧美精品激情在线观看| 97国产成人精品视频| 91在线免费视频| 黄网站色欧美视频| 精品国产91久久久久久老师| 亚洲日本成人网| 国产精品欧美日韩一区二区| 久久天天躁狠狠躁夜夜av| 欧美视频不卡中文| 欧美极品美女视频网站在线观看免费| 亚洲国产成人久久| 亚洲大尺度美女在线| 久久成人18免费网站| 韩国精品久久久999| 欧美午夜片欧美片在线观看| 久久99国产精品自在自在app| 亚洲成人久久一区| 亚洲少妇激情视频| 欧美韩日一区二区| 国产亚洲精品91在线| 亚洲另类xxxx| 神马久久桃色视频| 亚洲综合社区网| 欧美与欧洲交xxxx免费观看| 在线免费看av不卡| 亚洲黄色片网站| 国产欧美一区二区三区视频| 亚洲精品久久在线| 成人免费视频网址| 国产亚洲精品成人av久久ww| 91精品国产高清| 欧美激情精品久久久久久蜜臀| 久久精品一本久久99精品| 国产一区二区精品丝袜| 57pao成人永久免费视频| 亚洲欧洲日产国码av系列天堂| 久久影视电视剧免费网站| 8090理伦午夜在线电影| 亚洲少妇中文在线| 日韩久久免费电影| 国产在线精品一区免费香蕉| 欧洲成人免费aa| 亚洲a在线播放| 欧美专区在线播放| 黑人巨大精品欧美一区二区一视频| 日韩成人av网| 国产成人涩涩涩视频在线观看| 黄色成人av网| 亚洲爱爱爱爱爱| 欧美日韩国产精品一区二区三区四区| 国产成人短视频| 久久精品久久久久| 亚洲精品999| 欧美激情免费视频| 欧美高清videos高潮hd| 国产精品va在线播放我和闺蜜| 久久五月情影视| 国产精品一区二区久久久久| 精品亚洲国产视频| 日韩成人中文字幕在线观看|