java枚舉類常用方法


java枚舉類是非常常用的類型

下面做一個簡單的總結

一、枚舉基礎

public enum FilterType {
    DATE_FILTER,
    TEXT_FILTER,
    SELECT_FILTER;

    
    public static void main(String[] args) {
        //通過下標返回枚舉對象
        FilterType[] values = FilterType.values();
        FilterType filterType = values[0];
        System.out.println(filterType);
        //通過枚舉對象返回下標
        int index = filterType.ordinal();
        System.out.println(index);
        //通過枚舉對象返回名稱
        String name = filterType.name();
        System.out.println(name);
        //通過字符串名稱返回枚舉對象
        FilterType date_filter = FilterType.valueOf("DATE_FILTER");
        System.out.println(date_filter);
    }
}

 

二、給枚舉類型添加屬性

public enum ColumnType {
    INT("整型"),
    DOUBLE("浮點型"),
    DATE_YYYY("日期:yyyy"),
    DATE_YYYY_MM("日期:yyyy-MM"),
    DATE_YYYY_MM_DD("日期:yyyy-MM-dd"),
    DATETIME("日期時間"),
    VARCHAR("字符串");

    private final String value;

    ColumnType(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }
    

    public static void main(String[] args) {
        String value = ColumnType.INT.getValue();
        System.out.println(value);
     
    }
}

三、給枚舉添加方法

如果每個枚舉對象都需要有不同的行為,可以通過在枚舉類中定義抽象方法的形式實現。

這樣每個枚舉對象都需要實現這個抽象方法

public enum TemplateStatus {
    DRAFT(0) {
        void say() {
            System.out.println("草稿");
        }

        ;
    },//草稿
    RELEASE(1) {
        void say() {
            System.out.println("發布");
        }
    };//發布

    private final int value;

    TemplateStatus(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    abstract void say();
}

四、枚舉Set和枚舉Map

因為枚舉類不能靈活的添加和刪除元素,所以java本身又提供了EnumSet和EnumMap來增強這方面的功能。

 //EnumSet可以表示包含不包含,開或關
        EnumSet<ColumnType> columnTypes1 = EnumSet.noneOf(ColumnType.class);
        EnumSet<ColumnType> columnTypes = EnumSet.allOf(ColumnType.class);
        EnumSet<ColumnType> range = EnumSet.range(INT, VARCHAR);
        EnumSet<ColumnType> anInt = EnumSet.of(INT, DOUBLE);
        boolean contains = columnTypes.contains(ColumnType.INT);
        //EnumMap可以實現類似命令模式或策略模式的功能
        EnumMap<ColumnType, String> enumMap = new EnumMap<ColumnType, String>(ColumnType.class);
        enumMap.put(ColumnType.INT,"int");
        String s = enumMap.get(ColumnType.DOUBLE);

 


免責聲明!

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



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