【Java 枚举】详细介绍枚举的作用以及适用范围

简介: 【Java 枚举】详细介绍枚举的作用以及适用范围


介绍 😎

Java中的枚举是一种特殊的数据类型,用于定义一组固定的常量。枚举可以通过关键字 enum 来声明,其中每个枚举常量都是枚举类型的一个实例

// 枚举类
enum Weekday {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

上面代码使用枚举类定义了7个常量, 它们在Java内其实也可以使用这种方式表示

private static final Weekday MONDAY = Weekday.MONDAY;
private static final Weekday TUESDAY = Weekday.TUESDAY;
private static final Weekday WEDNESDAY = Weekday.WEDNESDAY;
private static final Weekday THURSDAY = Weekday.THURSDAY;
private static final Weekday FRIDAY = Weekday.FRIDAY;
private static final Weekday SATURDAY = Weekday.SATURDAY;
private static final Weekday SUNDAY = Weekday.SUNDAY;

适用范围 🥶

枚举的使用可以在代码中更清晰地表达某个变量可能的取值范围,以及限制变量的值只能是预定义的几个常量

|

它能够提供一种类型安全的、有限的可选项

|

枚举在很多场景下都很有用,比如表示状态、选项、命令等, 使用枚举比使用常量更加直观和易于理解

枚举判断案例 👻

public class Example {
    enum Weekday {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }
    public static void main(String[] args) {
        Weekday day = Weekday.TUESDAY;
        switch (day) {
            case MONDAY:
                System.out.println("今天是星期一,需要早起工作。");
                break;
            case TUESDAY:
                System.out.println("今天是星期二,可以继续努力工作。");
                break;
            case WEDNESDAY:
                System.out.println("今天是星期三,一周过半了。");
                break;
            case THURSDAY:
                System.out.println("今天是星期四,周末快要到了。");
                break;
            case FRIDAY:
                System.out.println("今天是星期五,周末就要开始了!");
                break;
            case SATURDAY:
                System.out.println("今天是星期六,可以放松一下了。");
                break;
            case SUNDAY:
                System.out.println("今天是星期日,可以好好休息。");
                break;
        }
    }
}

上面代码在类中定义了 7个 常量,使用switch语法判断之后打印出结果

枚举扩展案例 💀

// 定义一个枚举类型表示不同的动物
enum Animal {
    DOG("狗", "汪汪"),
    CAT("猫", "喵喵"),
    COW("牛", "哞哞"),
    LION("狮子", "吼吼");
    // 枚举属性
    private String name;
    private String sound;
    // 构造函数
    Animal(String name, String sound) {
        this.name = name;
        this.sound = sound;
    }
    // 枚举方法
    public String getName() {
        return name;
    }
    public String getSound() {
        return sound;
    }
}
public class Main {
    public static void main(String[] args) {
        // 遍历并打印所有动物的名字和叫声
        for (Animal animal : Animal.values()) {
            System.out.println("动物名称:" + animal.getName());
            System.out.println("叫声:" + animal.getSound());
            System.out.println();
        }
    }
}

这个例子中,我们定义了一个枚举类型Animal,它包含了几种动物,并且每种动物都有一个名称和对应的叫声。通过定义枚举属性和方法,我们可以在枚举常量中存储和访问额外的信息

在Main类的main函数中,我们通过Animal.values()获取所有的枚举常量,并使用getName()getSound()方法获取它们的名称和叫声

最后打印输出

动物名称:狗
叫声:汪汪
动物名称:猫
叫声:喵喵
动物名称:牛
叫声:哞哞
动物名称:狮子
叫声:吼吼
相关文章
|
14天前
|
安全 Java 索引
Java——反射&枚举
本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
37 9
Java——反射&枚举
|
6天前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
20 5
|
6天前
|
安全 Java 开发者
Java 枚举(enum)详解
Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
|
2月前
|
Java
Java枚举使用的基本案例
这篇文章是关于Java枚举的基本使用,通过一个指令下发的代码案例,展示了如何定义枚举、使用枚举以及如何通过枚举实现指令的匹配和处理。
|
2月前
|
Java 开发者
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案。本文通过技术综述及示例代码,剖析两者在性能上的差异。if-else具有短路特性,但条件增多时JVM会优化提升性能;switch则利用跳转表机制,在处理大量固定选项时表现出色。通过实验对比可见,switch在重复case值处理上通常更快。尽管如此,选择时还需兼顾代码的可读性和维护性。理解这些细节有助于开发者编写出既高效又优雅的Java代码。
30 2
|
2月前
|
安全 Java 编译器
java枚举
java枚举
16 0
|
3月前
|
存储 缓存 Java
java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决
java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决
|
2月前
|
Java
【Java】内部类、枚举、泛型
【Java】内部类、枚举、泛型
|
2月前
|
设计模式 存储 安全
18 Java反射reflect(类加载+获取类对象+通用操作+设计模式+枚举+注解)
18 Java反射reflect(类加载+获取类对象+通用操作+设计模式+枚举+注解)
74 0
|
3月前
|
缓存 开发者 Java
java枚举消除冗余代码问题之需要延迟注册枚举到缓存问题如何解决
java枚举消除冗余代码问题之需要延迟注册枚举到缓存问题如何解决
下一篇
无影云桌面