首頁 > Java > java教程 > java enum 枚舉

java enum 枚舉

伊谢尔伦
發布: 2016-11-25 10:37:35
原創
1697 人瀏覽過

  在大部分程式語言中,枚舉類型都會是一種常用而又必不可少的資料類型,Java當然也不會例外。然而,Java中的Enum枚舉型別卻有著許多你意想不到的用法,以下讓我們一起來看看。

1、可以在enum中加入變數和方法

  先來看一段程式碼範例:

public enum State {
        Normal("正常态", 1), Update("已更新", 2), Deleted("已删除", 3), Fired("已屏蔽", 4);
        // 成员变量
        private String name;
        private int index;
 
        // 构造方法,注意:构造方法不能为public,因为enum并不可以被实例化
        private State(String name, int index) {
            this.name = name;
            this.index = index;
        }
 
        // 普通方法
        public static String getName(int index) {
            for (State c : State .values()) {
                if (c.getIndex() == index) {
                    return c.name;
                }
            }
            return null;
        }
 
        // get set 方法
        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;
        }
    }
登入後複製

從上面的程式碼中我們可以看到,定義完枚舉值,然後在其後面加上分號,接著就可以定義其他的變數、方法了。另外要特別說明的是,enum中的建構方法不可以用public標識,這樣做是為了防止使用者實例化enum。

 2、可以用來定義常數

  先來回顧一下Java中如何定義常數吧,看下面一段程式碼:

public static final int normalState = 1;
private static final int updateState = 2;
登入後複製

下面我們還可以用enum枚舉來取代上面的常數定義,程式碼如下:

reee

在Java中用enum來定義常數在語法上沒有什麼優勢,但是enum枚舉型別可以提供更多的操作功能。

  先來看下面一段程式碼:

public enum State { 
  Normal, Update, Deleted, Fired
}
登入後複製
 和一般的類別中使用介面一樣,enum枚舉中同樣可以繼承接口,並實現接口中的所有方法,這樣做的好處在於可以更方便地對枚舉中的值進行排序、比較等操作,封裝性較好。

 總結

  說穿了,enum枚舉類型是一個不可以被繼承的final類,就以上面的State枚舉為例,如果你查看enum類型的字節碼,其實是State類型的類靜態常數。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板