java枚舉高級用法


package com.citi;
public class EnumTest {
    public static void main(String[] args) {
        forEnum();
        useEnumInJava();
    }
 
    /**
     * 循環枚舉,輸出ordinal屬性;若枚舉有內部屬性,則也輸出。(說的就是我定義的TYPE類型的枚舉的typeName屬性)
     */
    private static void forEnum() {
        for (SimpleEnum simpleEnum : SimpleEnum.values()) {
            System.out.println(simpleEnum + "  ordinal  " + simpleEnum.ordinal());
        }
        System.out.println("------------------");
        for (TYPE type : TYPE.values()) {
            System.out.println("type = " + type + "    type.name = " + type.name() + "   typeName = " + type.getTypeName() + "   ordinal = " + type.ordinal());
        }
        System.out.println("------------------");
        for (TYPE2 type : TYPE2.values()) {
            System.out.println("type = " + type + "    type.name = " + type.name() + "   ordinal = " + type.ordinal());
        }
    }
 
    /**
     * 在Java代碼使用枚舉
     */
    private static void useEnumInJava() {
        String typeName = "f5";
        TYPE type = TYPE.fromTypeName(typeName);
        if (TYPE.BALANCE.equals(type)) {
            System.out.println("根據字符串獲得的枚舉類型實例跟枚舉常量一致");
        } else {
            System.out.println("大師兄代碼錯誤");
        }
 
    }
 
    /**
     * 季節枚舉(不帶參數的枚舉常量)這個是最簡單的枚舉使用實例
     * Ordinal 屬性,對應的就是排列順序,從0開始。
     */
    private enum SimpleEnum {
        SPRING,
        SUMMER,
        AUTUMN,
        WINTER
    }
 
 
    /**
     * 常用類型(帶參數的枚舉常量,這個只是在書上不常見,實際使用還是很多的,看懂這個,使用就不是問題啦。)
     */
    private enum TYPE {
        FIREWALL("firewall"),
        SECRET("secretMac"),
        BALANCE("f5");
 
        private String typeName;
 
        TYPE(String typeName) {
            this.typeName = typeName;
        }
 
        /**
         * 根據類型的名稱,返回類型的枚舉實例。
         *
         * @param typeName 類型名稱
         */
        public static TYPE fromTypeName(String typeName) {
            for (TYPE type : TYPE.values()) {
                if (type.getTypeName().equals(typeName)) {
                    return type;
                }
            }
            return null;
        }
 
        public String getTypeName() {
            return this.typeName;
        }
    }
    private enum TYPE2 {
        FIREWALL("firewall"),
        SECRET("secretMac"),
        BALANCE("f5");
 
        private String typeName;
 
        TYPE2(String typeName) {
            this.typeName = typeName;
        }
 
       @Override
       public String toString() {
           return this.typeName;
       }
    }
}

 


免責聲明!

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



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