Java 枚舉類

1 概述

  • enum 與 class、interface 具有相同地位;
  • 默認(rèn)繼承 java.lang.Enum 類,所以不能繼承其他父類;其中 java.lang.Enum 類實(shí)現(xiàn)了 java.lang.Serializable 和 java.lang.Comparable 接口;
  • 使用 enum 定義,默認(rèn)使用 final 修飾,因此不能派生子類;
  • 構(gòu)造器默認(rèn)使用 private 修飾,且只能使用 private 修飾;
  • 枚舉類的所有實(shí)例必須在枚舉類的第一行顯式列出,否則這個(gè)枚舉類永遠(yuǎn)都不能產(chǎn)生實(shí)例。
  • 列出這些實(shí)例時(shí),系統(tǒng)會(huì)自動(dòng)添加public static final 修飾,無須顯式添加。

2 使用

在JDK 1.5之前,定義常量,我們一般使用兩種方式:

  • 定義一個(gè)常量類
  • 定義一個(gè)常量接口

2.1 無構(gòu)造函數(shù)的枚舉

如果枚舉中沒有定義方法,也可以在最后一個(gè)實(shí)例后面加逗號(hào)、分號(hào)或什么都不加。

public enum Season {

    SPRING,
    SUMMER,
    FALL,
    WINTER
}

可以結(jié)合switch使用

public class Main {

    public static void main(String[] args) {
        Season season = Season.SPRING;
        switch (season) {
            case SPRING:
                System.out.println("Spring");
                break;
            case SUMMER:
                System.out.println("Summer");
                break;
            case FALL:
                System.out.println("Fall");
                break;
            case WINTER:
                System.out.println("Winter");
                break;
            default:
                break;
        }
    }
}

2.2 有構(gòu)造函數(shù)的枚舉

public enum ProductType {

    SMART_HOME(0, "智能家居"),
    HEALTH_CARE(1, "醫(yī)療健康"),
    MOTION_DETECTION(2, "運(yùn)動(dòng)檢測"),
    INDUSTRIAL_PRODUCTION(3, "工業(yè)生產(chǎn)"),
    ENVIRONMENT_MONITORING(4, "環(huán)境監(jiān)測"),
    INTELLIGENT_OFFICE(6, "智能辦公"),
    LOCATION_DEVICE(7, "定位器/防丟器"),
    SMART_GATEWAY(8, "智能網(wǎng)關(guān)"),
    OTHERS(5, "其它");

    private int code;

    private String name;

    private ProductType(int code, String name) {
        this.code = code;
        this.name = name;
    }


    public int getCode() {
        return code;
    }


    public String getName() {
        return name;
    }

}

3 枚舉的方法

在 enum 中,提供了一些基本方法:

  • int compareTo(E o): 該方法用于與制定枚舉對象比較順序,同一個(gè)枚舉實(shí)例只能與相同類型的枚舉實(shí)例比較。如果該枚舉對象位于指定枚舉對象之后,則返回正整數(shù);反之返回負(fù)整數(shù);否則返回零。
  • static values(): 返回一個(gè)包含全部枚舉值的數(shù)組,可以用來遍歷所有枚舉值。
  • String name(): 返回此枚舉實(shí)例的名稱,即枚舉值。
  • ordinal():返回實(shí)例聲明時(shí)的次序,從 0 開始。
  • static valueOf(): 返回帶指定名稱的指定枚舉類型的枚舉常量,名稱必須與在此類型中聲明枚舉常量所用的標(biāo)識(shí)符完全匹配
  • boolean equals()方法: 比較兩個(gè)枚舉類對象的引用。
    • 枚舉類型對象之間的值比較,是可以使用==,直接來比較值,是否相等的,不是必須使用equals方法的喲

3 其他

  • 實(shí)現(xiàn)接口
  • 包含抽象方法
  • 包含靜態(tài)變量和靜態(tài)方法
  • 使用接口組織枚舉
  • 枚舉集合
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容