c语言编程笔录

首页 >   > 笔记大全

笔记大全

java中枚举的详细使用介绍

更新时间:2023-07-09

概述

枚举是一种特殊的类,它有固定数量的实例。枚举常用于表现状态、状态的转化、状态间的比较等。相对于常量等其它方式,枚举的代码可读性更好、更易于维护。

创建枚举类型

定义一个枚举类型,需要使用 enum 关键字:


enum Status {
    STARTED,
    PAUSED,
    STOPPED
}

上述代码定义了一个 Status 枚举类型,包含了三个枚举常量:STARTED、PAUSED、STOPPED。

使用枚举类型

在代码中使用枚举类型非常简单:


Status currentStatus = Status.STARTED;
if (currentStatus == Status.STARTED) {
    System.out.println("程序正在运行中...");
}

在上述代码中,我们先通过 Status.STARTED 来获得一个 Status 类型的实例,并将其赋值给 currentStatus 变量,然后使用 if 语句判断 currentStatus 的值是否等于 Status.STARTED,如果是,则输出信息。

枚举类型中添加方法和属性

枚举类型中可以像普通类一样定义方法和属性:


enum Status {
    STARTED("程序正在运行中..."),
    PAUSED("程序已暂停"),
    STOPPED("程序已停止");

    private String message;

    Status(String message) {
        this.message = message;
    }

    public void printMessage() {
        System.out.println(message);
    }
}

...

Status currentStatus = Status.STARTED;
currentStatus.printMessage();

在上述代码中,我们向 Status 枚举类型添加了一个属性 message,并在构造函数中初始化该属性。同时,我们还添加了一个方法 printMessage,该方法会输出 message 属性的值。在代码中,我们通过 Status.STARTED 获得一个 Status 类型的实例,然后通过该实例来调用其方法 printMessage,从而输出该状态的信息。

枚举类型的高级用法

枚举类型还有很多高级用法,例如,使用构造函数自定义每个枚举常量的值:


enum Status {
    STARTED("程序正在运行中...", 1),
    PAUSED("程序已暂停", 2),
    STOPPED("程序已停止", 3);

    private String message;
    private int code;

    Status(String message, int code) {
        this.message = message;
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public int getCode() {
        return code;
    }
}

...

Status currentStatus = Status.STARTED;
System.out.println(currentStatus.getMessage());
System.out.println(currentStatus.getCode());

在上述代码中,我们向 Status 枚举类型添加了一个属性 code,在构造函数中初始化该属性,然后定义了方法 getMessagegetCode 分别返回 messagecode 的值。在代码中,我们通过 Status.STARTED 获得一个 Status 类型的实例,然后通过该实例分别调用 getMessagegetCode 方法,从而输出该状态的信息和状态码。