自定义枚举类
方式一:
注: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); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!