java枚举如何用
枚举的基本定义
在Java中,枚举(enum)是一种特殊的数据类型,用于定义一组固定的常量。枚举通过enum关键字声明,常量通常用大写字母表示,多个常量之间用逗号分隔。
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
枚举的常用方法
枚举类默认继承java.lang.Enum,因此可以直接调用以下方法:
name():返回枚举常量的名称(字符串形式)。ordinal():返回枚举常量的序号(从0开始)。values():返回枚举的所有常量(数组形式)。valueOf(String name):根据名称返回对应的枚举常量。
示例:
Day today = Day.MONDAY;
System.out.println(today.name()); // 输出 "MONDAY"
System.out.println(today.ordinal()); // 输出 0
Day[] days = Day.values(); // 获取所有枚举值
枚举的高级用法
枚举可以包含字段、方法和构造函数,实现更复杂的功能。
public enum Planet {
MERCURY(3.303e+23, 2.4397e6),
VENUS(4.869e+24, 6.0518e6),
EARTH(5.976e+24, 6.37814e6);
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; }
}
枚举与switch结合
枚举常用于switch语句中,提高代码可读性。
Day day = Day.MONDAY;
switch (day) {
case MONDAY:
System.out.println("工作日开始");
break;
case FRIDAY:
System.out.println("周末快到了");
break;
default:
System.out.println("普通工作日");
}
枚举实现接口
枚举可以实现接口,为每个常量提供不同的行为。
public interface Greeting {
void greet();
}
public enum GreetingType implements Greeting {
HELLO {
public void greet() { System.out.println("Hello!"); }
},
GOODBYE {
public void greet() { System.out.println("Goodbye!"); }
};
}
枚举的单例模式
枚举天然支持单例模式,线程安全且防止反射攻击。

public enum Singleton {
INSTANCE;
public void doSomething() {
System.out.println("单例方法调用");
}
}






