如下代码配套视频:《28. 枚举实用指南,一学就会用》
28.1 基础枚举类
SeasonEnum.java
package com.enums.demo1;
/**
* @author 今日头条:老陈说编程
* 定义季节枚举类,包含春夏秋冬四个常量
*/
public enum SeasonEnum {
SPRING, SUMMER, AUTUMN, WINTER;
}
Main.java
package com.enums.demo1;
/**
* @author 今日头条:老陈说编程
* 主类,测试枚举
*/
public class Main {
public static void main(String[] args) {
//使用枚举常量
SeasonEnum current = SeasonEnum.SUMMER;
System.out.println("当前季节:" + current);
// 使用==比较枚举实例,输出匹配结果
if (current == SeasonEnum.SUMMER) {
System.out.println("这是夏季");
}
}
}
28.2 带属性和方法的枚举
SeasonEnum.java
package com.enums.demo2;
/**
* @author 今日头条:老陈说编程
* 带属性的季节枚举类,包含中文名和平均温度
*/
public enum SeasonEnum {
// 枚举常量定义,传入中文名称和温度参数
SPRING("春天", 15),
SUMMER("夏天", 30),
AUTUMN("秋天", 20),
WINTER("冬天", 5);
// 私有属性,存储季节中文名和平均温度
private final String chineseName;
private final int averageTemp;
// 枚举构造器,初始化属性值
SeasonEnum(String chineseName, int averageTemp) {
this.chineseName = chineseName;
this.averageTemp = averageTemp;
}
// 获取季节中文名
public String getChineseName() {
return chineseName;
}
// 获取季节平均温度
public int getAverageTemp() {
return averageTemp;
}
// 返回季节描述信息
public String getDescription() {
return chineseName + " (平均温度: " + averageTemp + "°C)";
}
}
Main.java
package com.enums.demo2;
/**
* @author 今日头条:老陈说编程
* 主类,测试枚举
*/
public class Main {
public static void main(String[] args) {
// 获取秋季枚举实例
SeasonEnum autumn = SeasonEnum.AUTUMN;
// 打印秋季中文名
System.out.println("季节:" + autumn.getChineseName());
// 打印秋季完整描述
System.out.println("描述:" + autumn.getDescription());
}
}
28.3 枚举在switch中的应用
SeasonEnum.java
package com.enums.demo3;
/**
* @author 今日头条:老陈说编程
* 定义季节枚举类,包含春夏秋冬四个常量
*/
public enum SeasonEnum {
SPRING, SUMMER, AUTUMN, WINTER;
}
Main.java
package com.enums.demo3;
/**
* @author 今日头条:老陈说编程
* 主类,测试枚举
*/
public class Main {
// 季节描述方法:根据传入的季节枚举输出对应描述
public static void describeSeason(SeasonEnum season) {
// 使用switch语句匹配季节枚举常量
switch (season) {
case SPRING:
System.out.println("春暖花开"); // 春季描述
break;
case SUMMER:
System.out.println("夏日炎炎"); // 夏季描述
break;
case AUTUMN:
System.out.println("秋高气爽"); // 秋季描述
break;
case WINTER:
System.out.println("寒冬腊月"); // 冬季描述
break;
default:
System.out.println("未知季节"); // 防御性编程,处理意外情况
}
}
public static void main(String[] args) {
// 设置当前季节为春季
SeasonEnum season = SeasonEnum.SPRING;
// 打印季节名称并调用描述方法
System.out.println("季节:" + season + ",描述:");
describeSeason(season);
}
}
28.4 实现接口的枚举
SeasonActivity.java
package com.enums.demo4;
/**
* @author 今日头条:老陈说编程
* 定义季节活动接口,声明获取活动的抽象方法
*/
interface SeasonActivity {
String getActivity();
}
SeasonEnum.java
package com.enums.demo4;
/**
* @author 今日头条:老陈说编程
* 季节枚举实现接口,为每个季节定义推荐活动
*/
public enum SeasonEnum implements SeasonActivity {
SPRING("春游"), // 春季活动
SUMMER("游泳"), // 夏季活动
AUTUMN("登山"), // 秋季活动
WINTER("滑雪"); // 冬季活动
private final String activity; // 存储季节活动名称
// 枚举构造器,初始化活动名称
SeasonEnum(String activity) {
this.activity = activity;
}
// 实现接口方法,返回季节活动
@Override
public String getActivity() {
return activity;
}
}
Main.java
package com.enums.demo4;
/**
* @author 今日头条:老陈说编程
* 主类,测试枚举
*/
public class Main {
public static void main(String[] args) {
System.out.println("各季节推荐活动:");
// 遍历所有季节枚举值并输出对应活动
for (SeasonEnum season : SeasonEnum.values()) {
System.out.println(season + ":" + season.getActivity());
}
}
}
28.5 枚举方法
Week.java
package com.enums.demo5;
/**
* @author 今日头条:老陈说编程
* 定义星期枚举类,包含周一至周日七个常量
*/
public enum Week {
MONDAY, // 周一
TUESDAY, // 周二
WEDNESDAY, // 周三
THURSDAY, // 周四
FRIDAY, // 周五
SATURDAY, // 周六
SUNDAY // 周日
}
Main.java
package com.enums.demo5;
/**
* @author 今日头条:老陈说编程
* 主类,测试枚举
*/
public class Main {
public static void main(String[] args) {
// 1. 使用values()获取所有枚举常量并遍历
System.out.println("一周的所有天数:");
for (Week day : Week.values()) {
System.out.println(day + "(序号:" + day.ordinal() + ")");
}
// 2. 使用valueOf()通过名称获取枚举常量(包含异常处理)
try {
Week friday = Week.valueOf("FRIDAY");
System.out.println("\n通过名称获取:" + friday);
} catch (IllegalArgumentException e) {
System.out.println("错误:不存在的枚举名称");
}
// 3. 使用ordinal()获取枚举序号并计算天数
Week today = Week.SATURDAY;
System.out.println("\n" + today + "是一周中的第 " + (today.ordinal() + 1) + " 天");
}
}