自定义枚举类
方式一:
注: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); } }