枚舉類型使用


一個博客: https://blog.csdn.net/javazejian/article/details/71333103

阿里開發規范:

  【參考】枚舉類名建議帶上 Enum 后綴,枚舉成員名稱需要全大寫,單詞間用下划線隔開。

說明: 枚舉其實就是特殊的類, 域成員均為常量, 且構造方法被默認強制是私有。
正例: 枚舉名字為 ProcessStatusEnum 的成員名稱: SUCCESS / UNKNOWN_REASON。

  【強制】所有的枚舉類型字段必須要有注釋,說明每個數據項的用途。

 

1.枚舉類的基本使用方式自己去找博客看看不在贅述

2.枚舉類自己有一個ordinal 方法 返回int 是根據枚舉成員的聲明順序來的,枚舉類自帶的有一個compareTo方法比較的是ordinal的值,看源碼可知.

3.枚舉對象的==和eques方式是一個作用看源碼可知

4.每一個枚舉類都會隱式的繼承java.lang.Enum這個類,java中又是沒有多繼承的,所以枚舉類不能繼承,可以實現接口可以通過任意枚舉反射獲取父類得知

5.enum類中定義抽象方法

public enum EnumDemo3 {

    FIRST{
        @Override
        public String getInfo() {
            return "FIRST TIME";
        }
    },
    SECOND{
        @Override
        public String getInfo() {
            return "SECOND TIME";
        }
    }

    ;

    /**
     * 定義抽象方法
     * @return
     */
    public abstract String getInfo();

    //測試
    public static void main(String[] args){
        System.out.println("F:"+EnumDemo3.FIRST.getInfo());
        System.out.println("S:"+EnumDemo3.SECOND.getInfo());
        /**
         輸出結果:
         F:FIRST TIME
         S:SECOND TIME
         */
    }
}
View Code

6.enum類與接口

public enum EnumDemo2 implements food ,sport{
    FOOD,
    SPORT,
    ; //分號分隔

    @Override
    public void eat() {
        System.out.println("eat.....");
    }

    @Override
    public void run() {
        System.out.println("run.....");
    }
}
View Code

7.使用switch不用再case中寫引用,直接 case BLUE:....

8.枚舉類EnumMap 底層使用數組效率高

EnumMap<ColorEnum, String> enumMap = new EnumMap<ColorEnum, String>(ColorEnum.class);
enumMap.put(ColorEnum.RED, ColorEnum.RED.getName());
enumMap.put(ColorEnum.GREEN, ColorEnum.GREEN.getName());
enumMap.put(ColorEnum.BLANK, ColorEnum.BLANK.getName());
enumMap.put(ColorEnum.YELLO, ColorEnum.YELLO.getName())
View Code

9枚舉類EnumSet

EnumSet<ColorEnum> colorEnumSet = EnumSet.allOf(ColorEnum.class);
for (ColorEnum colorEnum : colorEnumSet) {
    System.out.println(colorEnum.getName());
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM