java枚举程序
时间: 2025-04-05 17:17:17 浏览: 22
### 如何在 Java 中创建和使用枚举类型
#### 创建枚举类型
在 Java 中,可以通过 `enum` 关键字来定义一个新的枚举类型。枚举是一种特殊的类,可以包含构造函数、方法以及实例变量。以下是创建枚举的一个基本例子:
```java
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY;
}
```
上述代码展示了如何通过简单的名称列表定义一个名为 `Day` 的枚举类型[^1]。
如果需要更复杂的枚举结构,则可以在枚举中添加构造器、字段和方法。例如:
```java
public enum Planet {
MERCURY(3.30E23), VENUS(4.87E24), EARTH(5.98E24);
private double mass;
Planet(double mass) {
this.mass = mass;
}
public double getMass() {
return mass;
}
}
```
在此示例中,每个行星都有自己的质量属性,并且有一个获取该质量的方法。
#### 使用枚举类型
一旦定义好枚举类型之后,在程序中就可以像其他任何对象一样使用它们。下面是如何使用前面定义的 `Planet` 枚举的例子:
```java
public class EnumTest {
public static void main(String[] args) {
Planet earth = Planet.EARTH;
System.out.println("Earth's mass is " + earth.getMass());
}
}
```
这段代码演示了如何访问并打印地球的质量值。
另外需要注意的是,所有的枚举成员都会自动被 `public`, `static`, 和 `final` 修饰符所限定,因此可以直接通过枚举的名字去调用这些成员而无需实例化枚举本身[^2]。
#### 数据库与枚举之间的映射
当涉及到将数据库中的字符串值转换为对应的 Java 实体类中的枚举时,通常的做法是在实体类里提供一个静态方法来进行这种转换。比如有如下场景:假设数据库表中有列 `staff_state` 存储员工状态作为字符串形式(如 `"ACTIVE"` 或者 `"INACTIVE"`),而在 Java 实体类中希望将其表示为枚举类型。那么可以这样实现:
```java
public enum StaffState {
ACTIVE("active"),
INACTIVE("inactive");
private String stateValue;
StaffState(String stateValue) {
this.stateValue = stateValue;
}
public static StaffState fromString(String value) {
for (StaffState staffState : values()) {
if (staffState.getStateValue().equalsIgnoreCase(value)) {
return staffState;
}
}
throw new IllegalArgumentException("Unknown value: " + value);
}
public String getStateValue() {
return stateValue;
}
}
```
在这个例子中,我们还提供了辅助方法 `fromString()` 来完成从字符串到相应枚举项的转换操作[^3]。
#### 嵌套枚举
有时可能还需要在一个枚举内部再定义另一个枚举。这被称为嵌套枚举。虽然不常见,但在某些特定情况下可能会有用处。例如:
```java
public enum OuterEnum {
OUTER_ONE, OUTER_TWO;
public enum InnerEnum {
INNER_A, INNER_B
}
}
// 访问方式
OuterEnum.InnerEnum innerA = OuterEnum.InnerEnum.INNER_A;
System.out.println(innerA); // 输出INNER_A
```
这里展示了一个简单的方式用来声明和访问嵌套于外部枚举之内的另一层枚举[^4]。
阅读全文
相关推荐



















