java枚举如何使用
枚举的基本定义
在Java中,枚举(Enum)是一种特殊的类,用于表示一组固定的常量。通过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; }
}
枚举的常用方法
values():返回枚举的所有常量数组。valueOf(String name):根据名称返回对应的枚举常量。ordinal():返回枚举常量的序号(从0开始)。
Day[] days = Day.values(); // 获取所有枚举值
Day monday = Day.valueOf("MONDAY"); // 根据名称获取枚举
int ordinal = monday.ordinal(); // 返回0(MONDAY是第一个常量)
枚举实现接口
枚举可以实现接口,每个枚举常量可以重写接口方法。
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!");
}
};
}
枚举在switch语句中的使用
枚举常与switch语句结合,实现多分支逻辑。
Day day = Day.MONDAY;
switch (day) {
case MONDAY:
System.out.println("星期一");
break;
case TUESDAY:
System.out.println("星期二");
break;
default:
System.out.println("其他日期");
}
枚举的单例模式
枚举天然支持单例模式,线程安全且防止反射破坏。
public enum Singleton {
INSTANCE;
public void doSomething() {
System.out.println("单例方法");
}
}
枚举的注意事项
- 枚举的构造函数默认为
private,无法手动调用。 - 枚举常量必须在第一行声明,且以分号结尾(如果后面有字段或方法)。
- 枚举可以实现接口,但不能继承类(因为已隐式继承
java.lang.Enum)。







