Java 枚举的用法及实际使用场景_java enum类用法,零基础入门到精通,收藏这篇就够了

文章目录
  • 一、什么是枚举?
    • 枚举的主要特点:
  • 二、枚举的基本使用方法
    • 定义枚举
  • 三、**实际使用场景**
    • 代替常量
    • 状态机
  • 四、更多用法
    • 1.实现接口
    • 2.单例模式
    • 3.策略模式
  • 总结

一、什么是枚举?

枚举(enum)是 Java 中一种特殊的类,用于定义一组固定的常量。枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景。枚举常量是public static final的,可以直接通过枚举类名访问。

枚举的主要特点:

类型安全:限制了变量的取值范围,避免了无效值的传入。
代码简洁:枚举可以代替大量的常量定义,使代码更简洁。
易于维护:枚举将相关的常量集中在一起,便于维护扩展。

二、枚举的基本使用方法

定义枚举

通过enum关键字定义,语法如下:

public enum 枚举名 { 常量1, 常量2, 常量3; }

例如:星期

public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; }

另外,枚举还可以定义属性和方法,甚至可以定义构造函数。例如:

public enum Status { ACTIVE(1, "激活"), INACTIVE(2, "未激活"); private int code; private String description; // 枚举的构造函数 Status(int code, String description) { this.code = code; this.description = description; } public int getCode() { return code; } public String getDescription() { return description; } }

枚举类继承自java.lang.Enum,有一些自带的方法:比如name()ordinal()values()valueOf(String)。不过我一般比较少使用这些方法,实际中我会按下面使用枚举。

三、实际使用场景

代替常量

枚举可以用来替代传统的常量定义(如public static final int),提供更好的可读性和类型安全性。

状态机

表示有限的状态,比如状态、类型等业务数据。例如:

public enum Status { OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); private final String code; private final String info; Status(String code, String info) { this.code = code; this.info = info; } public String getCode() { return code; } public String getInfo() { return info; } public static String getInfoByCode(String code){ for (Status value : values()) { if (code.equals(value.code))return value.info; } return null; } public static List<String> getCodeList(){ List<String> codeList = new ArrayList<>(); for (Status value : Status.values()) { codeList.add(value.getCode()); } return codeList; } }

四、更多用法

1.实现接口

枚举可以实现接口,从而扩展功能。
像上文中自定义方法getCode()getInfo()getInfoByCode()getCodeList()都是单独为这个枚举创建的。

我们可以定义一个通用的接口。

public interface KeyValueEnum<K, V> { K getKey(); V getValue(); }

然后枚举类可以修改为:

public enum Status implements KeyValueEnum<String, String> { OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); private String key; private String value; Status(String key, String value) { this.key = key; this.value = value; } @Override public String getKey() { return key; } @Override public String getValue() { return value; } }

getInfoByCode()getCodeList()可以创建为工具类。

import java.util.ArrayList; import java.util.List; public class EnumUtils { /** * 根据 key 获取枚举的 value * * @param enumClass 枚举类 * @param key key * @param <K> key 类型 * @param <V> value 类型 * @param <E> 枚举类型 * @return 对应的 value,如果未找到则返回 null */ public static <K, V, E extends Enum<E> & KeyValueEnum<K, V>> V getValueByKey(Class<E> enumClass, K key) { for (E value : enumClass.getEnumConstants()) { if (value.getKey().equals(key)) { return value.getValue(); } } return null; } /** * 根据 value 获取枚举的 key * * @param enumClass 枚举类 * @param value value * @param <K> key 类型 * @param <V> value 类型 * @param <E> 枚举类型 * @return 对应的 key,如果未找到则返回 null */ public static <K, V, E extends Enum<E> & KeyValueEnum<K, V>> K getKeyByValue(Class<E> enumClass, V value) { for (E e : enumClass.getEnumConstants()) { if (e.getValue().equals(value)) { return e.getKey(); } } return null; } /** * 获取枚举类的所有 key 值 * * @param enumClass 枚举类 * @param <K> key 类型 * @param <V> value 类型 * @param <E> 枚举类型 * @return 包含所有 key 的列表 */ public static <K, V, E extends Enum<E> & KeyValueEnum<K, V>> List<K> getKeyList(Class<E> enumClass) { List<K> keyList = new ArrayList<>(); for (E value : enumClass.getEnumConstants()) { keyList.add(value.getKey()); } return keyList; } }

使用工具类:

public class Main { public static void main(String[] args) { // 获取 Status 枚举的所有 key 值 List<String> keyList = EnumUtils.getKeyList(Status.class); System.out.println(keyList); // 输出 ["0", "1", "2"] // 根据 key 获取 value String statusValue = EnumUtils.getValueByKey(Status.class, 1); System.out.println(statusValue); // 输出 "停用" // 根据 value 获取 key Integer statusKey = EnumUtils.getKeyByValue(Status.class, "正常"); System.out.println(statusKey); // 输出 0 } }

2.单例模式

枚举可以用来实现单例模式,确保一个类只有一个实例。

public enum Singleton { INSTANCE; public void example() { System.out.println("枚举实现单例模式"); } }

那么,为什么枚举可以实现单例模式呢?

枚举(enum)作为单例模式是一种非常优雅且安全的实现方式。主要是因为:

3.策略模式

枚举可以用来实现简单的策略模式,每个枚举常量可以定义自己的行为。
比如:进行一些运算。

public enum Operation { ADD { public int apply(int a, int b) { return a + b; } }, SUBTRACT { public int apply(int a, int b) { return a - b; } }; public abstract int apply(int a, int b); }

总结

枚举的使用可以使代码的可读性更高,更易于维护,并且可以进行一些特定的扩展。但是要注意枚举的使用场景,如果常量特别多或者会频繁变化的值,就不适合使用枚举。

Java开发的就业市场正在经历结构性调整,竞争日益激烈

传统纯业务开发岗位(如仅完成增删改查业务的后端工程师)的需求,特别是入门级岗位,正显著萎缩。随着企业技术需求升级,市场对Java人才的要求已从通用技能转向了更深入的领域经验(如云原生、微服务)或前沿的AI集成能力。这也导致岗位竞争加剧,在一、二线城市,求职者不仅面临技术内卷,还需应对学历与项目经验的高门槛。

大模型为核心的AI领域正展现出前所未有的就业热度与人才红利

2025年,AI相关新发岗位数量同比激增543%,单月增幅最高超过11倍,大模型算法工程师位居热门岗位前列。行业顶尖人才的供需严重失衡,议价能力极强,跳槽薪资涨幅可达30%-50%。值得注意的是,市场并非单纯青睐算法研究员,而是急需能将大模型能力落地于复杂业务系统的工程人才。这使得具备企业级架构思维和复杂系统整合经验的Java工程师,在向“Java+大模型”复合人才转型时拥有独特优势,成为企业竞相争夺的对象,其薪资天花板也远高于传统Java岗位。

说真的,这两年看着身边一个个搞Java、C++、前端、数据、架构的开始卷大模型,挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis,稳稳当当过日子。

结果GPT、DeepSeek火了之后,整条线上的人都开始有点慌了,大家都在想:“我是不是要学大模型,不然这饭碗还能保多久?”

先给出最直接的答案:一定要把现有的技术和大模型结合起来,而不是抛弃你们现有技术!掌握AI能力的Java工程师比纯Java岗要吃香的多。

即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地!大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇!

如何学习AGI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

四、大模型项目实战

学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1209592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试工程师指南:评估AI工具ROI的方法‌

随着人工智能技术在软件测试领域的广泛应用&#xff0c;测试工程师面临如何科学评估AI工具投资回报率&#xff08;ROI&#xff09;的挑战。ROI不仅关乎成本效益&#xff0c;还直接影响测试效率、质量和团队转型。本文基于行业最佳实践&#xff0c;提供一套完整的评估框架&#…

1.5 Go语言包管理实战:Go Modules从入门到精通

Go语言包管理实战:Go Modules从入门到精通 引言 Go Modules 是 Go 1.11 引入的官方依赖管理系统,彻底解决了 Go 语言的包管理问题。本文将深入讲解 Go Modules 的使用方法,从基础概念到高级应用,让你彻底掌握现代 Go 项目的依赖管理。 一、Go Modules 基础 1.1 为什么需…

1.7 Go HTTP服务器进阶:路由、中间件、错误处理完整实现

Go HTTP服务器进阶:路由、中间件、错误处理完整实现 引言 在掌握了 HTTP 服务器基础后,我们需要学习更高级的特性来构建生产级的应用。本文将深入讲解路由管理、中间件设计、错误处理、优雅关闭等进阶特性,让你能够构建健壮、可维护的 HTTP 服务器。 一、高级路由管理 1…

1.7 Go错误处理最佳实践:从error到panic再到recover的完整错误处理体系

1.7 Go错误处理最佳实践:从error到panic再到recover的完整错误处理体系 引言 Go语言的错误处理机制独特而强大,通过error接口、panic和recover构建了完整的错误处理体系。理解并正确使用这些机制,是编写健壮Go程序的关键。本文将深入解析Go语言的错误处理最佳实践。 一、…

1.8 Go语言包管理实战:Go Modules从入门到精通

1.8 Go语言包管理实战:Go Modules从入门到精通 引言 Go Modules是Go 1.11引入的官方依赖管理工具,彻底解决了Go语言的包管理问题。掌握Go Modules的使用,是进行Go项目开发的基础。本文将全面介绍Go Modules的使用方法,从基础到高级应用。 一、Go Modules基础 1.1 什么是…

1.6 手把手教你用Go编写第一个HTTP服务器:零基础也能搞定

手把手教你用Go编写第一个HTTP服务器:零基础也能搞定 引言 HTTP 服务器是云原生应用的基础。无论是微服务、API 网关还是 Web 应用,都离不开 HTTP 服务器。本文将手把手教你用 Go 语言编写第一个 HTTP 服务器,从最简单的 Hello World 到完整的 RESTful API,让你零基础也能…

2026年家装趋势:高性能节能门窗成主流,全屋门窗/豪宅设计/电动门窗/复古门窗/欧式门窗,节能门窗企业推荐榜单

在绿色建筑与低碳消费的双重驱动下,节能门窗已成为现代家居装修的核心环节。据中国建筑金属结构协会最新数据显示,2025年国内节能门窗市场规模突破800亿元,年复合增长率达15%,其中系统门窗占比超60%。消费者对门窗…

转行网络安全简历重构指南:从 “开发 / 运维” 到 “安全工程师”(附模板)

转行网络安全简历重构指南&#xff1a;从 “开发 / 运维” 到 “安全工程师”&#xff08;附模板&#xff09; “做了 2 年 Java 开发&#xff0c;简历写满‘SpringBoot 接口开发、MySQL 优化’&#xff0c;投安全开发岗位却没回应”“3 年运维经验&#xff0c;只会写‘负责服务…

从运维到网安:无缝转型指南+系统化学习路线

从运维到网安&#xff1a;无缝转型指南系统化学习路线 作为一名有运维经验的从业者&#xff0c;转型网络安全并非从零开始——运维工作中积累的系统架构认知、故障排查能力、服务器与网络运维经验&#xff0c;都是网安领域的核心基础。但网安与运维的核心目标不同&#xff1a;…

浙江金属软管厂家哪家好?恒达管业口碑出众

2026年工业制造与基础设施建设持续升级,金属软管作为连接管路系统的柔性纽带,其耐腐蚀性、抗压性与适配性直接决定了石油化工、航空航天、食品制药等领域的设备安全与运行效率。无论是应对-276℃超低温的液氮传输,还…

2026年玻璃隔断生产厂推荐,哪家口碑好

2026年办公空间与商业场景升级加速,玻璃隔断因兼具采光性、灵活性与美观性,成为企业优化空间布局、提升品牌形象的核心选择。无论是写字楼高性价比基础隔断、会议室隐私需求双玻百叶隔断,还是医院等特殊场所的防火隔…

【Django毕设全套源码+文档】基于Django的宠物服务管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于python语言的酒店推荐系统(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于Python的农产品销售系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于Django的家居全屋定制系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于PythonWeb的社区爱心养老管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基基于Django花卉商城系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【大数据毕设全套源码+文档】基于springboot+Hadoop的养老院数据分析与可视化设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【大数据毕设全套源码+文档】Django基于大数据技术旅游数据分析推荐系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026NMN市场洗牌:科研品牌盼生派NMN成为高净值人群抗衰首选

一、市场观察:NMN抗衰市场迎来深度洗牌,行业格局重塑 百度平台最新健康消费指数显示,关于“NMN无效”、“NMN怎么吃才有效”“NMN哪个牌子效果最好”的搜索量在近期持续攀升,与居高不下的“科学抗衰”关注度形成了…