中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Java enum 枚舉還可以這么用

2018-07-20    來(lái)源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

  在大部分編程語(yǔ)言中,枚舉類(lèi)型都會(huì)是一種常用而又必不可少的數(shù)據(jù)類(lèi)型,Java中當(dāng)然也不會(huì)例外。然而,Java中的Enum枚舉類(lèi)型卻有著許多你意想不到的用法,下面讓我們一起來(lái)看看。

 1、可以在enum中添加變量和方法

  先來(lái)看一段代碼示例:

public enum State {
        Normal("正常態(tài)", 1), Update("已更新", 2), Deleted("已刪除", 3), Fired("已屏蔽", 4);
        // 成員變量
        private String name;
        private int index;

        // 構(gòu)造方法,注意:構(gòu)造方法不能為public,因?yàn)閑num并不可以被實(shí)例化
        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;
        }
    }

  從上面的代碼中我們可以看到,定義完枚舉值,然后在其后面加上分號(hào),接著就可以定義其他的變量、方法了。另外需要特別說(shuō)明的是,enum中的構(gòu)造方法不可以用public標(biāo)識(shí),這樣做是為了防止用戶(hù)實(shí)例化enum。

 2、可以用來(lái)定義常量

  先來(lái)回顧一下Java中如何定義常量吧,看下面一段代碼:

public static final int normalState = 1;
private static final int updateState = 2;

  下面我們還可以用enum枚舉來(lái)代替上面的常量定義,代碼如下:

public enum State {  
  Normal, Update, Deleted, Fired
}

  在Java中用enum來(lái)定義常量在語(yǔ)法上沒(méi)有什么優(yōu)勢(shì),但是enum枚舉類(lèi)型可以提供更多的操作功能。

 3、在enum中實(shí)現(xiàn)接口

  先來(lái)看下面一段代碼:

public interface ICanReadState {
        void read();

        String getState();
}

    public enum State implements ICanReadState {
        Normal("正常態(tài)", 1), Update("已更新", 2), Deleted("已刪除", 3), Fired("已屏蔽", 4);

        private String name;
        private int index;

        private State(String name, int index) {
            this.name = name;
            this.index = index;
        }

        // 接口方法1

        @Override
        public String getState() {
            return this.name;
        }

        // 接口方法2
        @Override
        public void read() {
            System.out.println(this.index + ":" + this.name);
        }
    }

  和一般的類(lèi)中使用接口一樣,enum枚舉中同樣可以繼承接口,并實(shí)現(xiàn)接口中的所有方法,這樣做的好處在于可以更方便地對(duì)枚舉中的值進(jìn)行排序、比較等操作,封裝性更好。

 總結(jié)

  說(shuō)白了,enum枚舉類(lèi)型是一個(gè)不可以被繼承的final類(lèi),就以上面的State枚舉為例,如果你查看enum類(lèi)型的字節(jié)碼,其實(shí)是State類(lèi)型的類(lèi)靜態(tài)常量。

  via:ceocode – 小峰

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:漲姿勢(shì):Android手機(jī)的系統(tǒng)為什么叫ROM

下一篇:學(xué)習(xí)Swift 一定不能錯(cuò)過(guò)的10大開(kāi)源項(xiàng)目!