国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

別再濫用常量了!為什么 Java 枚舉正在全面“取代” static final

開發 前端
這篇文章將從設計、類型安全、運行機制和真實使用場景等多個角度,帶你重新認識:為什么枚舉,正在全面替代傳統的?static final?常量模式。

在很多 Java 項目中,總能看到這樣一段“熟悉又危險”的代碼:

public static final String STATUS_STARTED = "STARTED";
public static final String STATUS_COMPLETED = "COMPLETED";

看似簡單直接,實際上卻隱患重重:

字符串可以隨意賦值

編譯期無法校驗

含義分散、維護成本高

一不小心就埋下 Bug 的種子

而 Java 早在5.0版本就已經給出了解決方案——Enum(枚舉)。它并不是“語法糖”,而是一種更嚴謹、更工程化的建模工具。

這篇文章將從設計、類型安全、運行機制和真實使用場景等多個角度,帶你重新認識:

為什么枚舉,正在全面替代傳統的 static final 常量模式。

枚舉到底是什么?

在 Java 中,枚舉是一種特殊的類型,使用 enum 關鍵字定義。從結構上看,它更像一個受限的類:

隱式繼承 java.lang.Enum

默認 final,不可被繼承

每一個枚舉值,都是JVM 中唯一的實例

示例:定義一個流程狀態枚舉

//src/main/java/com/icoderoad/domain/Process.java
package com.icoderoad.domain;


public enum Process {
    STARTED,
    IN_PROGRESS,
    COMPLETED,
    FAILED
}

這里的 STARTED / IN_PROGRESS / COMPLETED / FAILED,并不是普通常量,而是JVM 在類加載階段就創建好的對象實例。

為什么不再推薦 static final 常量?

枚舉描述的是“集合”,常量只是“值”

枚舉:表達一組彼此關聯、語義明確的狀態

常量:只是孤立的字面量

Process status = Process.STARTED;   // 強語義

對比:

String status = "STARTED";          // 語義弱、無約束

編譯期類型安全,是最大優勢

枚舉在編譯期就能兜底錯誤。

Process status = Process.STARTED;  // 正確
status = "STARTED";                //  編譯失敗
status = 100;                      //  編譯失敗

而使用 static final 時:

public static final String STATUS_COMPLETED = "COMPLETED";
public static final String STATUS_FAILED = "FAILED";


String status = STATUS_COMPLETED;
status = "ANY_VALUE";   //  編譯通過,運行期埋雷

這正是生產事故的高發點。

什么時候該用枚舉?

推薦使用枚舉的場景:

值是固定的

彼此語義相關

需要被反復判斷 / 分支處理

例如:

狀態

角色

方向

等級

不適合枚舉的場景:

常量彼此毫無關系

值需要頻繁擴展或動態變化

為什么比較枚舉時要用 ==?

推薦:使用 ==

if (status == Process.COMPLETED) {
    // do something
}

原因非常明確:

JVM 單例保證

每個枚舉值在 JVM 中只有一個實例,== 判斷的是內存地址。

性能更優

== 是指令級比較,equals() 是方法調用。

編譯期安全

不同枚舉類型無法比較:

Process.STARTED == Direction.NORTH; // 編譯失敗

空指針安全

status == Process.COMPLETED; // false
status.equals(...);         //  NPE 風險

枚舉 + switch:天然搭檔

Java 5+:傳統 switch

Process status = Process.STARTED;


switch (status) {
    case STARTED:
        System.out.println("Process started");
        break;
    case IN_PROGRESS:
        System.out.println("Process in progress");
        break;
    case COMPLETED:
        System.out.println("Process completed");
        break;
    case FAILED:
        System.out.println("Process failed");
        break;
    default:
        throw new IllegalArgumentException("Invalid status");
}

Java 14+:switch 表達式(更現代)

Process status = Process.STARTED;


String result = switch (status) {
    case STARTED -> "Process started";
    case IN_PROGRESS -> "Process in progress";
    case COMPLETED -> "Process completed";
    case FAILED -> "Process failed";
};
System.out.println(result);

更簡潔、更安全、更符合函數式風格。

枚舉也可以有構造函數

枚舉并不是“只能寫名字”。

示例:方向 + 描述

//src/main/java/com/icoderoad/domain/Direction.java
package com.icoderoad.domain;


public enum Direction {


    NORTH("Up"),
    SOUTH("Down"),
    EAST("Right"),
    WEST("Left");


    private final String description;


    Direction(String description) {
        this.description = description;
    }


    public String getDescription() {
        return description;
    }
}

使用:

System.out.println(Direction.NORTH.getDescription()); // Up
System.out.println(Direction.WEST.getDescription());  // Left

構造函數始終是private,只能由枚舉自身調用。

你必須掌握的枚舉內置方法

name()

Process.STARTED.name();   // STARTED

ordinal()( 不建議持久化)

Process.STARTED.ordinal(); // 0

compareTo()

Process.IN_PROGRESS.compareTo(Process.COMPLETED); // -2

values()

for (Process p : Process.values()) {
    System.out.println(p);
}

valueOf(String)

Direction dir = Direction.valueOf("EAST");

區分大小寫,非法值會拋異常。

真實項目中的高頻使用場景

用戶角色:ADMIN / USER / GUEST

HTTP 狀態碼:NOT_FOUND / UNAUTHORIZED

請求方法:GET / POST / PUT / DELETE

日志級別:DEBUG / INFO / WARN / ERROR

內容類型:APPLICATION_JSON

權限控制:READ / WRITE / EXECUTE

結語:

枚舉不是“高級常量”,而是一種更嚴謹的領域建模方式。

當你還在用 static final String 維護狀態、類型、角色時:

枚舉已經在幫你做類型約束

幫你減少運行期錯誤

幫你提升代碼表達力

如果一組值是固定的、有關聯的、可窮舉的——那它就應該是一個枚舉,而不是一堆常量。

從今天起,讓enum成為你代碼中“被優先考慮的設計選項”。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-07-25 03:00:00

2020-12-20 17:37:38

Java開發代碼

2025-08-29 08:00:00

前端開發代碼

2020-01-15 08:42:16

TCP三次握手弱網絡

2020-04-01 15:30:19

TCPUDP服務器

2020-01-13 10:16:53

TCPUDP協議

2021-07-09 09:24:06

NanoID UUID軟件開發

2023-10-10 08:24:12

2022-08-08 08:04:17

Javastatic編程

2020-06-23 14:09:49

枚舉JDK場景

2018-07-09 14:44:27

存儲

2025-06-04 01:02:00

MySQL索引

2022-06-02 08:48:39

Go枚舉器Iota

2013-11-26 15:12:40

2019-05-30 08:18:27

物聯網IOT技術

2023-10-16 08:57:52

2018-04-09 22:17:44

物聯網物聯網設備智能

2021-09-23 15:55:50

線程池語言公式

2024-05-22 10:03:59

2013-09-25 10:58:40

SaaSGartner
點贊
收藏

51CTO技術棧公眾號

免费黄色av电影| 444亚洲人体| 污视频网站在线| 日韩欧美三级一区二区| 夜久久久久久| 日韩视频欧美视频| 这里只有精品在线| 国产毛片视频| 怡红院亚洲色图| 鲁一鲁一鲁一鲁一色| 视频一区视频二区视频三区视频四区国产 | caoporn国产精品| 香港久久久电影| 欧美午夜久久| 欧美裸体在线版观看完整版| 91国内外精品自在线播放| 在线免费观看的av| 青青草免费在线| 欧美日本高清| 成人片在线播放| 成人丁香基地| 亚洲美女15p| 久草在线新免费首页资源站| 在线免费色视频| 亚洲高清福利| 久久成人综合网| 日韩一中文字幕| 国产精品亚洲一区二区三区在线观看| 国产网站一区二区三区| 91精品久久久久久久久久久久久久 | 在线日本中文字幕| 女生裸体视频一区二区三区 | 免费在线观看毛片网站| 精品国产123区| 日韩免费视频在线观看| 久久电影网电视剧免费观看| 成人h猎奇视频网站| 77777影视视频在线观看| 日韩视频免费观看| 视频免费在线看| 羞羞在线视频| 99视频免费| 免费观看成人www动漫视频| 天堂精品久久久久| 欧美婷婷六月丁香综合色| 成人午夜视频免费看| 91老师片黄在线观看| 国产精品久久久久久妇女6080 | 紧缚捆绑精品一区二区| 欧美aaaaaa午夜精品| 99久久99久久免费精品蜜臀| 成人毛片老司机大片| 欧美日韩xxx| 亚洲已满18点击进入在线看片| 婷婷四房综合激情五月| 男男gay无套免费视频欧美| 蜜桃av一区二区| 久久久久久久久国产精品| 国产精品制服诱惑| 全黄性性激高免费视频| 中文在线天堂网| 国产乱码精品一品二品| 久久久久久久综合日本| 亚洲日本护士毛茸茸| 欧美二区三区的天堂| 久久久在线免费观看| 欧美日韩中文国产一区发布| 久久久久狠狠高潮亚洲精品| 欧美美女色图| 欧美精品国产白浆久久久久| 日韩情涩欧美日韩视频| 欧美精品激情在线观看| bbw在线视频| 国产福利电影网| 成人午夜视频网站| 无码人妻精品一区二区三区在线| 午夜伦理在线视频| 欧美韩日高清| 国产精品久久久久桃色tv| 亚洲精品一二区| 伊人久久大香线蕉综合75| 中国日本在线视频中文字幕| 亚洲成人av资源| 国产精品综合网站| 各处沟厕大尺度偷拍女厕嘘嘘| 国产精品亚洲成人| 欧美日韩在线视频一区二区三区| 国产三级一区二区三区| 黄p免费网站| 国产精品x453.com| 中文字幕欧美激情一区| 日韩av综合网站| 亚洲综合欧美日韩| 天天综合网站| 欧美猛交ⅹxxx乱大交视频| 色愁久久久久久| 欧美日韩xx| 日韩欧美成人午夜| 欧美久久久久久久久久久久久久| 国产精品论坛| 福利一区福利二区| 亚洲成人免费网站| 欧洲精品一区二区三区久久| a级精品国产片在线观看| 第四色亚洲色图| 香港成人在线视频| 懂色av粉嫩av蜜臀av| 久久精品66| 欧美亚洲动漫精品| 精品3atv在线视频| eeuss一区二区三区| 一二三四区精品视频| 中文字幕 91| 日韩大陆毛片av| 中国女人久久久| 日韩在线电影一区| 精品久久久久久久久中文字幕 | 秋霞午夜鲁丝一区二区老狼| 99视频精品全部免费看| 老司机精品视频导航| 国产精品999视频| 91美女精品福利| 国产伦理精品| 日韩一区二区三区资源| 欧美电影影音先锋| 亚洲国产欧美国产综合一区| 亚洲乱码中文字幕| 国产原创av在线| 欧美一区二区三区四区在线观看| 久久五月精品中文字幕| 国产麻豆乱码精品一区二区三区 | 小嫩嫩12欧美| 一区二区成人网| 亚洲免费看黄网站| youjizzjizz亚洲| 91久久中文字幕| 免费在线观看视频一区| 欧美成年黄网站色视频| 精品一区二区日本| 国产剧情一区二区| 免费亚洲电影| 日本精品免费观看| 国产精品白丝在线| 国产一区99| 亚洲国产精品日韩| 国产精品天天看| 开心激情综合| 麻豆影视在线观看| 亚洲国内精品在线| 欧美sss在线视频| 自拍偷拍第1页| 欧美一区二区三区不卡| 日韩电影在线看| 91美女在线免费观看| 国产精品美女免费视频| 精品一区二区综合| 中文字幕不卡三区视频| 欧美一级电影在线| 日韩一区精品视频| 成人私拍视频| 亚洲黄色小视频在线观看| 日本韩国在线不卡| 欧美日韩成人在线| 久久av综合| 国产一级免费在线观看| 亚洲一区二区三区精品视频| 日韩在线视频网| 国产日韩欧美一区在线| 123区在线| 色哟哟精品视频| 亚洲精品综合精品自拍| 欧美一区二区三区另类| 色婷婷在线播放| koreanbj精品视频一区| 国产玖玖精品视频| 亚洲精品99久久久久中文字幕| 欧美国产激情一区二区三区蜜月| 牛夜精品久久久久久久99黑人| 538视频在线| 麻豆免费网站| 国产高清免费在线| 6080午夜不卡| 日韩美女一区二区三区在线观看| 欧美亚日韩国产aⅴ精品中极品| 日本vs亚洲vs韩国一区三区二区| 亚洲国产欧美在线观看| www.国产在线视频| 日韩免费在线观看| 中文字幕不卡在线播放| 欧美aⅴ99久久黑人专区| 成人看片毛片免费播放器| 在线免费日韩| 日本高清不卡的在线| 91网站黄www| 亚洲二区免费| 中文字幕在线二区| 特色特色大片在线| 97超级在线观看免费高清完整版电视剧| 亚洲男女性事视频| 在线亚洲一区二区|