枚举
枚举的使用
如何定义枚举类
方式一:jdk.50之前,自定义枚举
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| public class SeasonTest { public static void main(String[] args) { Season01 spring = Season01.SEASON_01; System.out.println(spring); } }
class Season01{ private final String seasonName; private final String seasonDesc;
private Season01(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; }
public static final Season01 SEASON_01 = new Season01("春天","春暖花开"); public static final Season01 SEASON_02 = new Season01("夏天","夏日炎炎"); public static final Season01 SEASON_03 = new Season01("秋天","秋高气爽"); public static final Season01 SEASON_04 = new Season01("冬天","冰天雪地");
public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; }
@Override public String toString() { return "Season01{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }
|
方式二:jdk5.0,可以使用enum关键字定义枚举类
注意:
使用enum创建枚举类,默认继承于 java.lang.Enum类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| public class SeasonTest02 { public static void main(String[] args) { Season02 summer = Season02.SUMMER; System.out.println(summer);
System.out.println(summer.getClass().getSuperclass()); } }
enum Season02{ SPRING("春天","春暖花开"), SUMMER("夏天","夏日炎炎"), AUTUMN("秋天","秋高气爽"), WINTER2("冬天","冰天雪地");
private final String seasonName; private final String seasonDesc;
private Season02(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; }
public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
|
Enum中的常用方法
values() : 返回枚举类型的对象数组。该方法可以很方便的遍历枚举对象。
valueOf(String str) : 可以把一个字符串转换为对应的枚举类对象。要求字符串必须是枚举类对象的”名字“。如不是,会有运行时异常:IllegalArgumentException。
toString() :返回当前枚举类对象常量的名称。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| public class SeasonTest02 { public static void main(String[] args) { Season02 summer = Season02.SUMMER; System.out.println(summer); System.out.println(Arrays.toString(summer.values()));
System.out.println(Season02.valueOf("SPRING"));
System.out.println(summer.getClass().getSuperclass()); } }
enum Season02{ SPRING("春天","春暖花开"), SUMMER("夏天","夏日炎炎"), AUTUMN("秋天","秋高气爽"), WINTER("冬天","冰天雪地");
private final String seasonName; private final String seasonDesc;
private Season02(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; }
public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
|
使用enum关键字定义的枚举类实现接口
方式一:枚举类中实现接口方法——每个枚举对象调用方法返回结果都一样
方式二:每个枚举对象都实现接口方法——每个枚举对象返回结果不一样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| public class SeasonTest02 { public static void main(String[] args) { Season02 summer = Season02.SUMMER; System.out.println(summer); System.out.println(Arrays.toString(summer.values()));
System.out.println(Season02.valueOf("SPRING"));
System.out.println(summer.getClass().getSuperclass());
summer.show(); } }
interface Info{ void show(); }
enum Season02 implements Info{ 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 Season02(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; }
public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; }
}
|