枚举类
1. 枚举类的使用
- 枚举类的理解:类的对象只有有限个,我们称此类为枚举类。
- 当需要定义一组常量时,强烈建议使用枚举类。
- 如果枚举类中只有一个对象,则可以作为单例模式的实现。
2. 如何定义枚举类
- 方式一:JDK5.0之前,自定义枚举类
- 方式二:JDK5.0以后,可以使用enum关键字定义枚举类
2.1 自定义枚举类
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 + '\'' + '}'; } }
枚举类测试:
Season spring = Season.SPRING;
System.out.println(spring);
2. enum关键字定义枚举类
enum Season{ SPRING("春天","春暖花开"), SUMMER("夏天","夏日炎炎"), AUTUMN("秋天","秋高气爽"), WINTER("冬天","冰天雪地"); private final String seasonName; private final String seasonDesc; Season(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
测试:
System.out.println(Season.SPRING);
System.out.println(Season.SPRING.getSeasonName());
System.out.println(Season.SPRING.getSeasonDesc());
Season[] seasons = Season.values(); for (Season season : seasons) { System.out.println(season); } System.out.println("*********************"); //根据名字返回对应对象 Season spring = Season.valueOf("SPRING"); System.out.println(spring);