欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的Enum枚舉使用方法解析

 更新時間:2023年11月07日 10:01:58   作者:JFS_Study  
這篇文章主要介紹了Java中的Enum枚舉使用方法解析,枚舉是一種數(shù)據(jù)類型,和int、double、string等類型相似,枚舉用于聲明一組命名的常數(shù),當一個變量有幾種可能的取值時,可以將它定義為枚舉類型,需要的朋友可以參考下

一、為什么需要枚舉

舉個例子,生物界性別分“雄性”、“雌性”和“中性”,將其定義為靜態(tài)常量:

public class Gender{
    public static final int Male = 1;
    public static final int Female = 2;
    public static final int Neutral = 3;
}

對于這種單值類型的靜態(tài)常量定義,本身也沒錯,主要是在使用的地方?jīng)]有一個明確性的約束而已,比如這里的 judgeGender 方法的本意是傳入 Gender 的三種靜態(tài)常量之一,但由于沒有類型上的約束,因此傳入任意一個 int 值都是可以的,編譯器也不會提出任何警告。

void judgeGender(int code){}

但是在枚舉類型出現(xiàn)之后,上面這種情況就可以用枚舉嚴謹?shù)厝ゼs束,比如用枚舉去定義性別就非常簡潔了:

public enum Gender {
    Male, Female, Neutral
}

而且主要是在用枚舉的地方會有更強的類型約束。如下入?yún)㈩愋途蜁艿矫鞔_的類型約束,一旦傳入無效值,編譯器就會幫檢查,從而規(guī)避潛在問題。除此之外,枚舉在擴展性方面比普通常量更方便、也更優(yōu)雅。

//入?yún)⒕拖薅祟愋?
void judgeGender(Gender gender){}

綜上,枚舉的意義:

  • 封裝有限的變化,提高代碼維護性,確保變量合法。 如果利用 int 類型表示星期一到星期日的話,就要判斷輸入 int 變量不在 1-7 的范圍內(nèi)的情況。
  • 代碼更優(yōu)雅,提高代碼可讀性。一個復制的程序里面,可能要用到成百上千的靜態(tài)常量,如果全寫在一個文件里面,容易造成命名混淆,程序讀起來也比較麻煩。

二、單值枚舉

定義一個性別枚舉:

public enum Gender {
    Male, Female, Neutral
}

枚舉的所有基本用法:

public class judgeGender {
    public static void main(String[] args) {
        for (Gender genderType : Gender.values()) {
            System.out.println(genderType);
        }
        Gender male = Gender.Male;
        Gender female = Gender.Female;
        Gender neutral = Gender.Neutral;
        System.out.println(male.ordinal());//0
        System.out.println(female.ordinal());//1
        System.out.println(neutral.ordinal());//2
        System.out.println(male.name());//Male
        System.out.println(female.name());//Female
        System.out.println(neutral.name());//Neutral
        System.out.println(male.compareTo(male));//0
        System.out.println(male.compareTo(female));//-1
        System.out.println(female.compareTo(neutral));//-1
        System.out.println(Gender.valueOf("Male"));//Male
        System.out.println(Gender.valueOf("Female"));//Female
        System.out.println(Gender.valueOf("Neutral"));//Neutral
        Gender gender = Gender.Male;
        switch (gender) {
            case Male:
                System.out.println("男");
                break;
            case Female:
                System.out.println("女");
                break;
            case Neutral:
                System.out.println("中性");
                break;
        }//男
    }
}

三、多值枚舉

上面展示的枚舉例子非常簡單,僅僅是單值的情形,而實際項目中用枚舉往往是多值用法。擴充一下上面的 Gender 枚舉,在里面加入 【說明 – 編碼】的對應關系,這也是實際項目中常用的用法??梢栽诿杜e里自定義各種屬性、構(gòu)造函數(shù)、甚至各種方法:

public enum GenterType {

    Male("男", "01"),
    Female("女", "02"),
    Neutral("中性", "03"),
    ;

    //自定義屬性
    private final String explain;
    private final String code;
    public String getExplain() {
        return explain;
    }
    public String getCode() {
        return code;
    }
    //自定義構(gòu)造函數(shù)
    GenterType(String explain, String code) {
        this.explain = explain;
        this.code = code;
    }
}

從上述代碼可知,在 enum 枚舉類中完全可以像在普通 Class 里一樣聲明屬性、構(gòu)造函數(shù)以及成員方法。

四、專門用于枚舉的集合類

一般習慣于使用諸如:HashMap 和 HashSet 等集合來盛放元素。而對于枚舉,有專門的集合類: EnumSet 和 EnumMap

  • EnumSet

EnumSet 是專門為盛放枚舉類型所設計的 Set 類型。

  • EnumMap

EnumMap 則是用來專門盛放枚舉類型為 key 的 Map 類型。

到此這篇關于Java中的Enum枚舉使用方法解析的文章就介紹到這了,更多相關Java中的Enum枚舉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論