【Java系列】枚举优点以及使用场景

简介: 目录枚举的优点:枚举的特性使用场景 :枚举的优点:1 增强代码可读性:枚举可以让你代码看起来很舒服,而且常量统一管理起来,当项目很大的时候很容易管理。2 传递参数错误3 去除equals两者判断 由于常量值地址唯一,使用枚举可以直接通过“==”进行两个值之间的对比,性能会有所提高。4 编译优势(与常量类相比)常量类编译时,常量被直接编译进二进制代码中,常量值在升级中变化后,需要重新编译引用常量的类,因为二进制代码中存放的是旧值。枚举类编译时,没有把常量值编

目录

一、枚举的优点:

二、枚举的特性

三、使用场景


一、枚举的优点:

1 增强代码可读性

枚举可以让你代码看起来很舒服,而且常量统一管理起来,当项目很大的时候很容易管理。

2 传递参数错误

可以减少参数传递的错误性

3 去除equals两者判断

由于常量值地址唯一,使用枚举可以直接通过“==”进行两个值之间的对比,性能会有所提高。

4 编译优势(与常量类相比)

常量类编译时,常量被直接编译进二进制代码中,常量值在升级中变化后,需要重新编译引用常量的类,因为二进制代码中存放的是旧值。

枚举类编译时,没有把常量值编译到代码中,即使常量值发生改变,也不会影响引用常量的类。

5 修改优势(与常量类相比)

枚举类编译后默认final class,不允许继承可防止被子类修改。常量类可被继承修改、增加字段等,易导致父类不兼容。

6 枚举型可直接与数据库交互

7 Switch语句优势

使用int、String类型switch时,当出现参数不确定的情况,偶尔会出现越界的现象,这样我们就需要做容错操作(if条件筛选等),使用枚举,编译期间限定类型,不允许发生越界。

image.gif编辑

二、枚举的特性

    • 不能被继承
    • java 不能使用 = 赋值
    • enum 可以通过方法显示赋值
    • enum 可以添加普通方法、静态方法、抽象方法、构造方法
    • 枚举可以实现接口

    三、使用场景

     1、作为普通的常量使用:

    如 星期、季节、颜色、城市 等等;通常配合 switch 语句使用。

     2、往枚举中添加变量:

    构造函数、以达到灵活获取指定值的目的。      

    3、通常用于一些业务系统中定义一些固定值:

    如用于匹配数据库中的字段值等。在平时数据库表的设计中,我们一般以数字来代表一些常量,那么在 java 中就可以通过枚举来将数据库字段的数值和所代表的常量对应起来。        

    4、往枚举中添加自己特定方法:

    以实现自己所需的相关业务逻辑。比如:可以通过状态码获得对应的状态码信息。

    强烈建议当你需要定义一组常量时,使用枚举类型。

    尽量不要使用枚举的高级特性,事实上高级特性都可以使用普通类来实现,没有必要引入复杂性!

    在项目中一般都是通过枚举来定义常量数据字典。


    相关文章
    |
    18天前
    |
    安全 Java 测试技术
    🎉Java零基础:全面解析枚举的强大功能
    【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
    101 60
    |
    2月前
    |
    安全 Java 索引
    Java——反射&枚举
    本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
    62 9
    Java——反射&枚举
    |
    2月前
    |
    Java
    java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
    java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
    81 5
    |
    2月前
    |
    安全 Java 开发者
    Java 枚举(enum)详解
    Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
    |
    3月前
    |
    Java
    Java枚举使用的基本案例
    这篇文章是关于Java枚举的基本使用,通过一个指令下发的代码案例,展示了如何定义枚举、使用枚举以及如何通过枚举实现指令的匹配和处理。
    |
    3月前
    |
    Java 开发者
    在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案
    在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案。本文通过技术综述及示例代码,剖析两者在性能上的差异。if-else具有短路特性,但条件增多时JVM会优化提升性能;switch则利用跳转表机制,在处理大量固定选项时表现出色。通过实验对比可见,switch在重复case值处理上通常更快。尽管如此,选择时还需兼顾代码的可读性和维护性。理解这些细节有助于开发者编写出既高效又优雅的Java代码。
    53 2
    |
    3月前
    |
    安全 Java 编译器
    |
    4月前
    |
    存储 缓存 Java
    java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决
    java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决
    |
    4月前
    |
    安全 Java
    Java进阶之枚举
    【7月更文挑战第11天】Java枚举是Java 5引入的特性,用于定义固定常量集合,如星期。枚举是继承自`java.lang.Enum`的特殊类,编译后成为final类,每个枚举值是静态final实例。定义枚举用`enum`关键字,如`public enum Weekday {MONDAY, TUESDAY, ...}`。枚举可包含方法和变量,能实现接口但不能继承其他类。例如,`Weekday`枚举可实现`Describe`接口,提供`describe()`方法。在实际应用中,枚举常用于表示如响应状态等固定选项,便于类型安全和代码阅读。
    39 8
    |
    3月前
    |
    Java
    【Java】内部类、枚举、泛型
    【Java】内部类、枚举、泛型