最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文搞懂Java項目中枚舉的定義與使用

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

什么是枚舉

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

為什么需要枚舉類

下面就舉例說明一下吧

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

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

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

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

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

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

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

枚舉類的定義和使用

下面就定義一個試題類型的枚舉類吧

    /**
 * 試題類型 枚舉類; 0 填空題、1 判斷 題、2 單選題、3 多選題、4 簡答題、5 問答題、6 論述題、7 計算題、8 畫圖題、9 其他題
 * @author lyy
 * @date 2022/05/23
 */
public enum TopicTypeEnum {
    /** 填空題  */
    FILL_IN_THE_BLANK(0, "填空題"),
    /** 判斷題  */
    JUDGE(1, "判斷題"),
    /** 單選題  */
    SINGLE_CHOICE(2, "單選題"),
    /** 多選題  */
    MULTIPLE_CHOICE(3, "多選題"),
    /** 簡答題  */
    BRIEF_ANSWER(4, "簡答題"),
    /** 問答題  */
    QUESTIONS_AND_ANSWERS(5, "問答題"),
    /** 論述題  */
    DISCUSS(6, "論述題"),
    /** 計算題  */
    COMPUTE(7, "計算題"),
    /** 畫圖題  */ 
    //最后一個類型必須要用分號結束
    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 枚舉對象數(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():返回當前枚舉類的name屬性,如果沒有,則throw new java.lang.IllegalArgumentException()。具體可以查看java.lang.Enum源碼。
  • values():返回包括所有枚舉變量的數(shù)組。
  • toString(),name():返回當前枚舉類變量的name屬性
  • ordinal():枚舉類會給所有的枚舉變量一個默認的次序,該次序從0開始,是根據(jù)我們定義的次序來排序的。而ordinal()方法就是獲取這個次序(或者說下標)。
  • compareTo():返回兩個次序相減后的結果。

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

相關文章

  • Java 基礎之內部類詳解及實例

    Java 基礎之內部類詳解及實例

    這篇文章主要介紹了 Java 基礎之內部類詳解及實例的相關資料,需要的朋友可以參考下
    2017-03-03
  • Java簡單計算圓周率完整示例

    Java簡單計算圓周率完整示例

    這篇文章主要介紹了Java簡單計算圓周率,結合完整實例形式分析了Java計算圓周率的原理與操作技巧,代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下
    2018-05-05
  • java?啟動參數(shù)?springboot?idea詳解

    java?啟動參數(shù)?springboot?idea詳解

    這篇文章主要介紹了java?啟動參數(shù)?springboot?idea的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • IntelliJ?IDEA教程之clean或者install?Maven項目的操作方法

    IntelliJ?IDEA教程之clean或者install?Maven項目的操作方法

    這篇文章主要介紹了IntelliJ?IDEA教程之clean或者install?Maven項目的操作方法,本文分步驟給大家介紹兩種方式講解如何調試出窗口,需要的朋友可以參考下
    2023-04-04
  • springboot整合日志處理Logback的實現(xiàn)示例

    springboot整合日志處理Logback的實現(xiàn)示例

    Logback是由log4j創(chuàng)始人設計的又一個開源日志組件,本文主要介紹了springboot整合日志處理Logback,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • Mybatis 多對一查詢的實現(xiàn)方法

    Mybatis 多對一查詢的實現(xiàn)方法

    這篇文章主要介紹了Mybatis 多對一查詢,本文通過場景分析示例代碼相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Java設計模式之觀察者模式observer?pattern詳解

    Java設計模式之觀察者模式observer?pattern詳解

    這篇文章主要介紹了Java設計模式之觀察者模式observer?pattern詳解,當一個對象發(fā)生數(shù)據(jù)變化時,通知其他相關的一系列對象,接受到通知的對象根據(jù)該對象的變化進行相應處理以響應變化的過程,需要的朋友可以參考下
    2023-12-12
  • Java 控制流程、大數(shù)值、數(shù)組

    Java 控制流程、大數(shù)值、數(shù)組

    這篇文章主要給大家介紹的是Java 控制流程、大數(shù)值、數(shù)組的一些相關自來哦,感興趣的小伙伴可以參考下面文章的具體內容,希望文章對你有所幫助
    2021-10-10
  • Java中的ReentrantLock原理解析

    Java中的ReentrantLock原理解析

    這篇文章主要介紹了Java中的ReentrantLock原理解析,ReentrantLock是Java中的一個線程同步工具,它提供了比synchronized更靈活和強大的功能。它是一個可重入的互斥鎖,意味著同一個線程可以多次獲取該鎖,而不會發(fā)生死鎖,需要的朋友可以參考下
    2023-11-11
  • SkyWalking自定義鏈路追蹤實現(xiàn)步驟

    SkyWalking自定義鏈路追蹤實現(xiàn)步驟

    本文詳細介紹了如何使用SkyWalking進行自定義鏈路追蹤的步驟,包括POM文件依賴和邏輯業(yè)務代碼的編寫,文章最后推薦了腳本之家作為進一步學習的資源
    2024-02-02

最新評論

奎屯市| 合作市| 屯昌县| 米林县| 桂平市| 福建省| 称多县| 津市市| 洮南市| 济源市| 昌黎县| 呼和浩特市| 庆元县| 信丰县| 平远县| 通化市| 宁德市| 厦门市| 建湖县| 高州市| 广昌县| 从化市| 曲阳县| 中卫市| 太仓市| 叙永县| 桐柏县| 新巴尔虎左旗| 任丘市| 蒲江县| 漳州市| 合川市| 东台市| 都安| 肥乡县| 潼南县| 浙江省| 云龙县| 乌恰县| 康保县| 宜黄县|