自定义枚举类

方式一:

  注:jdk5.0以后不建议使用方式一来自定义枚举类,记录只是为了更好的理解。

复制代码
/**
 * 方式一:jdk5.0之前,使用class自定义
 * 1:用private,final声明类的属性
 * 2:私有化构造器,并给属性赋值
 * 3:提供当前类有限个确定的对象,用public static final修饰
 */
class Season {

    private final String seasonName;
    private final String seasonDesc;

    private Season (String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    public static final Season SPRING = new Season("","春暖花开");
    public static final Season SUMMER = new Season("","夏日炎炎");
    public static final Season AUTUMN = new Season("","秋高气爽");
    public static final Season WINTER = new Season("","冬雪皑皑");

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }

    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}
复制代码

方式二:

  注:jdk5.0之后switch支持枚举类型,case之后直接写枚举类的对象名就行,而不用枚举类.对象名

复制代码
/**
 * 方式二:jdk5.0以后,使用enum关键字定义枚举类
 * 1:提供当前类有限个确定的对象
 * 2:用private,final声明类的属性
 * 3:私有化构造器,并给属性赋值
 * 说明:
 * 定义的枚举类默认继承java.lang.Enum,重写过toString
 * 可以让枚举类的对象分别实现接口的抽象方法
 */
enum SeasonEnum implements SeasonShow {
    SPRING("","春暖花开") {
        @Override
        public void show() {
            System.out.println("春笋");
        }
    },
    SUMMER("","夏日炎炎") {
        @Override
        public void show() {
            System.out.println("夏蝉");
        }
    },
    AUTUMN("","秋高气爽") {
        @Override
        public void show() {
            System.out.println("秋雨");
        }
    },
    WINTER("","冬雪皑皑") {
        @Override
        public void show() {
            System.out.println("冬雪");
        }
    };

    private final String seasonName;
    private final String seasonDesc;

    private SeasonEnum (String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
}

interface SeasonShow {
    void show();
}
复制代码

枚举类的使用:

复制代码
public class CustomerEnum {
    public static void main(String[] args) {
        Season autumn = Season.AUTUMN;
        SeasonEnum spring = SeasonEnum.SPRING;
        System.out.println(SeasonEnum.class.getSuperclass());
        //java.lang.Enum的常用方法
        System.out.println(spring.toString());
        System.out.println("**********************************");
        SeasonEnum[] values = SeasonEnum.values();
        for (SeasonEnum value : values) {
            System.out.println(value);
            value.show();
        }
        System.out.println("**********************************");
        SeasonEnum summer = SeasonEnum.valueOf("SUMMER");
        System.out.println(summer);
    }
}
复制代码

 

posted @   Java厨师长  阅读(271)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示