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
,在构造函数中初始化该属性,然后定义了方法 getMessage
和 getCode
分别返回 message
和 code
的值。在代码中,我们通过 Status.STARTED
获得一个 Status
类型的实例,然后通过该实例分别调用 getMessage
和 getCode
方法,从而输出该状态的信息和状态码。