java项目中 枚举类型enum用法
时间: 2025-01-14 17:10:43 浏览: 44
### Java 枚举类型 `enum` 的用法
枚举类型 (`enum`) 是一种特殊的数据类型,允许变量被赋予一组预定义常量中的一个。这有助于提高代码可读性和安全性。
#### 定义简单的枚举类
可以创建表示一周七天的简单枚举:
```java
public enum DayOfWeek {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY;
}
```
此段代码声明了一个名为 `DayOfWeek` 的枚举类型,并为其指定了七个可能取值[^1]。
#### 增强功能:带字段和方法的枚举
除了基本形式外,还可以给枚举成员添加属性以及实现接口或编写自定义逻辑的方法:
```java
public enum Planet {
MERCURY(3.30E23), VENUS(4.87E24), EARTH(5.98E24),
MARS(6.42E23);
private final double mass;
// 私有构造函数用于初始化实例变量
Planet(double mass) { this.mass = mass; }
public double getMass() { return mass; }
}
```
这里展示了如何通过私有的构造器来设置每个行星的质量参数,并提供了获取该质量值得公共访问器方法。
#### 使用场景举例——状态机模拟
当处理具有有限数量离散状态的对象时,比如订单的状态转换过程,使用枚举是非常合适的解决方案之一:
```java
public class Order {
private Status status;
public void setStatus(Status newStatus){
switch(this.status){
case PENDING:
if(newStatus != Status.PROCESSING && newStatus != Status.CANCELLED)
throw new IllegalStateException();
break;
case PROCESSING:
if(newStatus != Status.SHIPPED)
throw new IllegalStateException();
break;
default:
if(!newStatus.equals(Status.COMPLETED))
throw new IllegalStateException();
}
this.status = newStatus;
}
public static enum Status{
PENDING, PROCESSING, SHIPPED, COMPLETED, CANCELLED;
}
}
```
上述例子中,`Order.Status` 枚举用来管理订单的不同阶段及其合法转变路径。
阅读全文
相关推荐














