1 package com.atfu.java; 2 3 /** 4 * 一、枚举类的使用 5 * 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 6 * 2.当需要定义一组常量时,强烈建议使用枚举类 7 * 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 8 * 9 * 二、如何定义枚举类 10 * 方式一:jdk5.0之前,自定义枚举类 11 * 方式二:jdk5.0,可以使用enum关键字定义枚举类 12 * 13 * 14 * 15 * @author fu jingchao 16 * @creat 2021/12/5-15:27 17 */ 18 public class SeasonTest { 19 public static void main(String[] args) { 20 Season autumn = Season.AUTUMN; 21 System.out.println(autumn); 22 } 23 } 24 25 //自定义枚举类 26 class Season{ 27 //1.声明Season对象的属性:private,final 28 private final String seasonName; 29 private final String seasonDesc; 30 31 //2.私有化类的构造器,并给对象属性初始化 32 private Season(String seasonName,String seasonDesc){ 33 this.seasonName = seasonName; 34 this.seasonDesc = seasonDesc; 35 } 36 //3.提供当前枚举类的多个对象:声明为 public static final 37 public static final Season SPRING = new Season("春天","春暖花开"); 38 public static final Season SUMMER = new Season("夏天","夏日炎炎"); 39 public static final Season AUTUMN = new Season("秋天","秋高气爽"); 40 public static final Season WINTER = new Season("冬天","冰天雪地"); 41 42 //4.获取枚举对象的属性 43 44 public String getSeasonName() { 45 return seasonName; 46 } 47 48 public String getSeasonDesc() { 49 return seasonDesc; 50 } 51 //5.提供toSting方法 52 53 54 @Override 55 public String toString() { 56 return "Season{" + 57 "seasonName='" + seasonName + '\'' + 58 ", seasonDesc='" + seasonDesc + '\'' + 59 '}'; 60 } 61 }
1 package com.atfu.java; 2 3 /** 4 * 使用enum关键字来定义枚举类 5 * 说明:定义的枚举类默认继承于java.lang.Enum类 6 * 一、Enum类中的常用方法: 7 * 1.values()方法:返回枚举类型的对象数组。该方法可以很方便的遍历所有的枚举值。 8 * 2.valueOf(String str):可以把一个字符串转换成对应的枚举对象。要求字符串必须是枚举类对象的 “名字” 。如不是,会有运行时异常 9 * 3.toString():返回当前枚举对象常量的名称。 10 *二、使用enum关键字定义的枚举类实现接口的情况 11 * 情况一:实现接口,再enum类中实现抽象方法 12 * 情况二:让枚举类的对象分别实现接口中的抽象方法 13 * 14 * 15 * @author fu jingchao 16 * @creat 2021/12/5-16:00 17 */ 18 public class SeasonTest1 { 19 public static void main(String[] args) { 20 Season1 summer = Season1.SUMMER; 21 System.out.println(summer); 22 System.out.println(Season1.class.getSuperclass()); 23 System.out.println("***********************************"); 24 //values() 25 Season1[] values = Season1.values(); 26 for (int i = 0; i < values.length; i++) { 27 System.out.println(values[i]); 28 values[i].show(); 29 } 30 31 } 32 } 33 34 interface Info{ 35 void show(); 36 } 37 38 //自定义枚举类 39 enum Season1 implements Info{ 40 41 //1.提供当前枚举类的多个对象:多个对象之间用逗号隔开,末尾对象用分号结束 42 SPRING("春天","春暖花开"){ 43 @Override 44 public void show() { 45 System.out.println("这是春天"); 46 } 47 }, 48 SUMMER("夏天","夏日炎炎") { 49 @Override 50 public void show() { 51 System.out.println("这是夏天"); 52 } 53 }, 54 AUTUMN("秋天","秋高气爽") { 55 @Override 56 public void show() { 57 System.out.println("这是秋天"); 58 } 59 }, 60 WINTER("冬天","冰天雪地") { 61 @Override 62 public void show() { 63 System.out.println("这是冬天"); 64 } 65 }; 66 67 //2.声明Season对象的属性:private,final 68 private final String seasonName; 69 private final String seasonDesc; 70 71 //3.私有化类的构造器,并给对象属性初始化 72 private Season1(String seasonName,String seasonDesc){ 73 this.seasonName = seasonName; 74 this.seasonDesc = seasonDesc; 75 } 76 77 //4.获取枚举对象的属性 78 public String getSeasonName() { 79 return seasonName; 80 } 81 82 public String getSeasonDesc() { 83 return seasonDesc; 84 } 85 86 // @Override 87 // public void show() { 88 // System.out.println("季节"); 89 // } 90 //不重写toString方法 91 // //5.提供toSting方法 92 // @Override 93 // public String toString() { 94 // return "Season{" + 95 // "seasonName='" + seasonName + '\'' + 96 // ", seasonDesc='" + seasonDesc + '\'' + 97 // '}'; 98 // } 99 }