Java中定义枚举使用enum关键字,是特殊的类,用于表示固定常量集;支持字段、方法、构造器,继承自java.lang.Enum且不可被继承;提供values()、valueOf()等内置方法,广泛用于状态码、配置标识、单例及switch场景。
Java 中定义枚举类型使用 enum 关键字,它是一种特殊的类,用于表示一组固定、常量的值。相比用 public static final int 或 String 模拟常量,enum 更安全、可读性更强,还支持方法、字段和构造器。
最简形式如下:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
说明:
枚举可以像普通类一样拥有私有字段、构造器(只能是 private)、getter 方法等:
public enum HttpStatus {
OK(200, "Success"),
NOT_FOUND(404, "Resource not found"),
INTERNAL
_ERROR(500, "Server error");
private final int code;
private final String message;
HttpStatus(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() { return code; }
public String getMessage() { return message; }
}
使用示例:
System.out.println(HttpStatus.OK.getCode()); // 输出:200 System.out.println(HttpStatus.NOT_FOUND.getMessage()); // 输出:Resource not found
所有枚举类自动获得几个实用的静态/实例方法:
遍历示例:
for (Day day : Day.values()) {
System.out.println(day + " at position " + day.ordinal());
}
枚举不是“摆设”,而是解决特定问题的利器:
switch 示例:
switch (status) {
case PENDING:
processPending();
break;
case SHIPPED:
notifyCustomer();
break;
default:
throw new IllegalStateException("Unknown status: " + status);
}