王剑编程网

分享专业编程知识与实战技巧

28. 枚举(视频配套代码)(枚举工具类)

如下代码配套视频:《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) + " 天");
    }
}
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言