好的阿杰 👍
我来给你写一份 通俗易懂的 Java 枚举(enum)详解,从概念到实战示例,方便你快速掌握。
🟦 Java 枚举(enum)详解
1️⃣ 什么是枚举?
枚举(enum
)是一种特殊的类,用来表示一组固定的常量。
比如:季节(春夏秋冬)、星期(周一到周日)、状态码(SUCCESS/FAIL)等。
👉 枚举的好处:
- 代码更可读:不用写一堆
int
或String
常量。 - 更安全:限定只能使用枚举中定义的值。
- 更强大:枚举可以有构造方法、字段、方法,就像普通类一样。
2️⃣ 枚举的基本语法
enum Season {
SPRING,
SUMMER,
AUTUMN,
WINTER
}
使用:
public class TestEnum {
public static void main(String[] args) {
Season s = Season.SPRING;
System.out.println(s); // 输出 SPRING
}
}
3️⃣ 枚举的常用方法
每个枚举对象都继承自 java.lang.Enum
,常见方法有:
Season s = Season.AUTUMN;
System.out.println(s.name()); // AUTUMN(枚举名,字符串)
System.out.println(s.ordinal()); // 2(位置,从0开始)
System.out.println(Season.values());// [SPRING, SUMMER, AUTUMN, WINTER]
System.out.println(Season.valueOf("SUMMER")); // SUMMER
4️⃣ 枚举可以像类一样扩展
枚举不仅仅是常量,还可以定义字段、构造方法、方法。
enum Season {
SPRING("春天", 15),
SUMMER("夏天", 30),
AUTUMN("秋天", 20),
WINTER("冬天", 0);
private final String name;
private final int avgTemp;
// 构造方法(只能是 private)
Season(String name, int avgTemp) {
this.name = name;
this.avgTemp = avgTemp;
}
public String getName() {
return name;
}
public int getAvgTemp() {
return avgTemp;
}
}
使用:
public class TestEnum {
public static void main(String[] args) {
Season s = Season.SUMMER;
System.out.println(s.getName()); // 夏天
System.out.println(s.getAvgTemp()); // 30
}
}
5️⃣ 枚举可以实现接口
枚举不能继承类(因为默认继承 Enum
),但可以实现接口:
interface Info {
void show();
}
enum Season implements Info {
SPRING, SUMMER, AUTUMN, WINTER;
@Override
public void show() {
System.out.println("这是一个季节: " + this.name());
}
}
6️⃣ 枚举的 switch 用法
枚举在 switch
中非常常见:
Season s = Season.WINTER;
switch (s) {
case SPRING:
System.out.println("春暖花开");
break;
case SUMMER:
System.out.println("夏日炎炎");
break;
case AUTUMN:
System.out.println("秋高气爽");
break;
case WINTER:
System.out.println("寒风凛冽");
break;
}
📝 总结
- 枚举是特殊类 → 一组常量。
- 自带方法 →
values()
、ordinal()
、name()
。 - 可以扩展 → 定义字段、构造方法、实现接口。
- 实用场景 → 状态码、配置常量、逻辑分支(switch)。
发表回复