java如何使用枚举
枚举的基本定义
枚举在Java中是一种特殊的数据类型,用于定义一组固定的常量。通过enum关键字声明,每个枚举常量默认是public static final的实例。
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
枚举的属性和方法
枚举可以包含字段、方法和构造函数,实现更复杂的逻辑。
public enum Planet {
MERCURY(3.303e+23, 2.4397e6),
VENUS(4.869e+24, 6.0518e6);
private final double mass; // 质量
private final double radius; // 半径
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
public double getMass() { return mass; }
public double getRadius() { return radius; }
}
枚举的常用方法
Java为枚举提供了内置方法,例如values()和valueOf():
values():返回枚举的所有常量数组。valueOf(String name):根据名称返回对应的枚举常量。
Day[] days = Day.values();
Day monday = Day.valueOf("MONDAY");
枚举与switch语句
枚举常与switch结合使用,提高代码可读性:
public void printDayType(Day day) {
switch (day) {
case MONDAY:
System.out.println("工作日");
break;
case SATURDAY:
System.out.println("周末");
break;
default:
System.out.println("其他");
}
}
枚举实现接口
枚举可以实现接口,为每个常量提供不同的行为:
public interface Greeting {
void greet();
}
public enum GreetingType implements Greeting {
HELLO {
@Override
public void greet() {
System.out.println("Hello!");
}
},
GOODBYE {
@Override
public void greet() {
System.out.println("Goodbye!");
}
};
}
枚举的单例模式
枚举天然支持线程安全的单例模式,避免反射和序列化问题:
public enum Singleton {
INSTANCE;
public void doSomething() {
System.out.println("单例操作");
}
}
枚举的注意事项
- 枚举常量必须在枚举类的第一行声明。
- 枚举的构造函数默认为
private,不可手动调用。 - 枚举适合表示固定集合的值(如状态、类型等),避免滥用。







