亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文搞懂Java項(xiàng)目中枚舉的定義與使用

 更新時(shí)間:2022年06月16日 10:37:18   作者:java奧斯卡  
枚舉就是用enum修飾是一種Java特殊的類,枚舉是class、底層是繼承了java.lang.Enum類的實(shí)體類。本文將詳解枚舉的定義與使用,需要的可以參考一下

什么是枚舉

最近寫新項(xiàng)目!有很多數(shù)據(jù)字典常量需要定義和使用、就順便記錄一下、什么是枚舉類呢?就是用enum修飾是一種Java特殊的類,枚舉是class、底層是繼承了java.lang.Enum類的實(shí)體類、使用枚舉可以很方便的定義數(shù)據(jù)常量、方便清晰我們使用

為什么需要枚舉類

下面就舉例說明一下吧

1)出于類型安全考慮,沒用枚舉類之前,常用靜態(tài)常量來表示。 比如對(duì)于性別的表示:

public static final int WOMAN = 0;
public static final int MAN = 1;

這種性別定義實(shí)際上是一個(gè)整數(shù)數(shù)據(jù)類型。首先,這些變量可用于加減運(yùn)算。當(dāng)然我們很少這樣干 第二,含義不明確。我們調(diào)試的時(shí)候,最初將“男”輸出到,結(jié)果為1。因此,我們必須在前面尋找0的含義,尤其是當(dāng)我們查看其他人的代碼時(shí)。會(huì)看不懂、定義枚舉類在類里面進(jìn)行詳細(xì)說明這樣的話就能清楚的知道含義。

2) 代碼更優(yōu)雅

在項(xiàng)目大一點(diǎn)當(dāng)中,可以使用數(shù)百個(gè)靜態(tài)常量。如果它們都寫在一個(gè)文件類里面的話,很容易造成命名混亂,程序也很難讀取。

3) 枚舉類可以幫助我們定義所需的類型

枚舉易于記憶和使用,相當(dāng)于一個(gè)接口。使用時(shí),只需封裝內(nèi)部數(shù)據(jù)類型并限制數(shù)據(jù)字段。此外,可以為不同的枚舉變量調(diào)用不同的處理方法(這可以通過實(shí)現(xiàn)枚舉類的抽象方法來實(shí)現(xiàn))。

枚舉類的定義和使用

下面就定義一個(gè)試題類型的枚舉類吧

    /**
 * 試題類型 枚舉類; 0 填空題、1 判斷 題、2 單選題、3 多選題、4 簡(jiǎn)答題、5 問答題、6 論述題、7 計(jì)算題、8 畫圖題、9 其他題
 * @author lyy
 * @date 2022/05/23
 */
public enum TopicTypeEnum {
    /** 填空題  */
    FILL_IN_THE_BLANK(0, "填空題"),
    /** 判斷題  */
    JUDGE(1, "判斷題"),
    /** 單選題  */
    SINGLE_CHOICE(2, "單選題"),
    /** 多選題  */
    MULTIPLE_CHOICE(3, "多選題"),
    /** 簡(jiǎn)答題  */
    BRIEF_ANSWER(4, "簡(jiǎn)答題"),
    /** 問答題  */
    QUESTIONS_AND_ANSWERS(5, "問答題"),
    /** 論述題  */
    DISCUSS(6, "論述題"),
    /** 計(jì)算題  */
    COMPUTE(7, "計(jì)算題"),
    /** 畫圖題  */ 
    //最后一個(gè)類型必須要用分號(hào)結(jié)束
    DRAW_PICTURE(9, "畫圖題");

    /** 值 */
    private final Integer code;

    /** 名稱 */
    private final String name;

    public static TopicTypeEnum getByCode(Integer code) {
        if (null == code) {
            return null;
        }
        for (TopicTypeEnum status : TopicTypeEnum.values()) {
            if (status.getCode().intValue() == code.intValue()) {
                return status;
            }
        }
        return null;
    }

    public static TopicTypeEnum getByName(String name) {
        for (TopicTypeEnum status : TopicTypeEnum.values()) {
            if (status.getName().equals(name)) {
                return status;
            }
        }
        return null;
    }

    public static List<NameCode> getNameCode() {
        return Stream.of(TopicTypeEnum.values())
            .map(item -> new NameCode(item.getCode(), item.getName()))
            .collect(Collectors.toList());
    }

    TopicTypeEnum (Integer code, String name) {
        this.code = code;
        this.name = name;
    }

    public Integer getCode() {
        return code;
    }

    public String getName() {
        return name;
    }

    /**
     *  @author lyy
     *  @date 2022/06/14
     *  @return 枚舉對(duì)象數(shù)組
     */
    public static List<Map<String, Object>> toList() {
        List<Map<String, Object>> list = new ArrayList<>();
        for (TopicTypeEnum item : TopicTypeEnum.values()) {
            Map<String, Object> map = new HashMap<>();
            map.put("code", item.getCode());
            map.put("name", item.getName());
            list.add(map);
        }
        return list;
    }

枚舉類的常用方法

  • valueOf():返回當(dāng)前枚舉類的name屬性,如果沒有,則throw new java.lang.IllegalArgumentException()。具體可以查看java.lang.Enum源碼。
  • values():返回包括所有枚舉變量的數(shù)組。
  • toString(),name():返回當(dāng)前枚舉類變量的name屬性
  • ordinal():枚舉類會(huì)給所有的枚舉變量一個(gè)默認(rèn)的次序,該次序從0開始,是根據(jù)我們定義的次序來排序的。而ordinal()方法就是獲取這個(gè)次序(或者說下標(biāo))。
  • compareTo():返回兩個(gè)次序相減后的結(jié)果。

到此這篇關(guān)于一文搞懂Java項(xiàng)目中枚舉的定義與使用的文章就介紹到這了,更多相關(guān)Java枚舉內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?Boot整合?NoSQL?數(shù)據(jù)庫?Redis詳解

    Spring?Boot整合?NoSQL?數(shù)據(jù)庫?Redis詳解

    這篇文章主要為大家介紹了Spring?Boot整合?NoSQL?數(shù)據(jù)庫?Redis詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java中compareTo方法使用小結(jié)

    Java中compareTo方法使用小結(jié)

    compareTo是Java中Object類中的一個(gè)方法,它的作用是比較兩個(gè)對(duì)象的大小關(guān)系,本文主要介紹了Java中compareTo方法使用小結(jié),感興趣的可以了解一下
    2024-01-01
  • java合并多個(gè)文件的實(shí)例代碼

    java合并多個(gè)文件的實(shí)例代碼

    在本篇文章里小編給大家整理的是關(guān)于java合并多個(gè)文件的實(shí)例代碼,有需要的朋友們可以參考學(xué)習(xí)下。
    2020-02-02
  • java實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)

    java實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • springboot中rabbitmq實(shí)現(xiàn)消息可靠性機(jī)制詳解

    springboot中rabbitmq實(shí)現(xiàn)消息可靠性機(jī)制詳解

    這篇文章主要介紹了springboot中rabbitmq實(shí)現(xiàn)消息可靠性機(jī)制詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • Spring BeanFactory和FactoryBean有哪些區(qū)別

    Spring BeanFactory和FactoryBean有哪些區(qū)別

    這篇文章主要介紹了Spring BeanFactory 與 FactoryBean 的區(qū)別詳情,BeanFactory 和 FactoryBean 的區(qū)別卻是一個(gè)很重要的知識(shí)點(diǎn),在本文中將結(jié)合源碼進(jìn)行分析講解,需要的小伙伴可以參考一下
    2023-02-02
  • MybatisX無法自動(dòng)生成entity實(shí)體類的解決方法

    MybatisX無法自動(dòng)生成entity實(shí)體類的解決方法

    本文主要介紹了MybatisX無法自動(dòng)生成entity實(shí)體類的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java輕松掌握面向?qū)ο蟮娜筇匦苑庋b與繼承和多態(tài)

    Java輕松掌握面向?qū)ο蟮娜筇匦苑庋b與繼承和多態(tài)

    本文主要講述的是面向?qū)ο蟮娜筇匦裕悍庋b,繼承,多態(tài),內(nèi)容含括從封裝到繼承再到多態(tài)的所有重點(diǎn)內(nèi)容以及使用細(xì)節(jié)和注意事項(xiàng),內(nèi)容有點(diǎn)長,請(qǐng)大家耐心看完
    2022-05-05
  • java藍(lán)橋杯試題

    java藍(lán)橋杯試題

    這篇文章主要介紹了java藍(lán)橋杯試題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • java設(shè)計(jì)簡(jiǎn)單學(xué)生管理系統(tǒng)

    java設(shè)計(jì)簡(jiǎn)單學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)簡(jiǎn)單學(xué)生管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評(píng)論