1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类
2.当需要定义一组常量时,强烈建议使用枚举类
3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式
//自定义枚举类 class Season { //1.声明Season对象的属性 private final String seasonName; private final String seasonDesc; //2.私有化类的构造器 private Season(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //3.提供当前枚举类的多个对象; public static final的对象 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("冬天", "冰天雪地"); //4.其他诉求1:获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } //4.其他诉求2,提供toString() @Override public String toString() { return "Season{" + "seasonName='" + seasonName + ''' + ", seasonDesc='" + seasonDesc + ''' + '}'; } }三、jdk5.0后使用enum定义枚举类。步骤:
//使用enum关键字枚举类 enum Season1 implements Info{ //1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束 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("大约在冬季"); } }; //1.声明Season对象的属性 private final String seasonName; private final String seasonDesc; //2.私有化类的构造器 private Season1(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //4.其他诉求1:获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } // //4.其他诉求2,提供toString() // // @Override // public String toString() { // return "Season{" + // "seasonName='" + seasonName + ''' + // ", seasonDesc='" + seasonDesc + ''' + // '}'; // } // //情况一 // @Override // public void show() { // System.out.println("这是一个季节"); // } }四、使用enum定义枚举类之后,枚举类常用方法:(继承于java.lang.Enum类)
Season1 summer = Season1.SUMMER; //toString():返回枚举类对象的名称 System.out.println(summer.toString()); // System.out.println(Season1.class.getSuperclass()); System.out.println("****************************************"); //values():返回所有的枚举类对象构成的数组 Season1[] values = Season1.values(); for (int i = 0; i < values.length; i++) { System.out.println(values[i]); } System.out.println("****************************************"); Thread.State[] values1 = Thread.State.values(); for (Thread.State state : values1) { System.out.println(state); } System.out.println("****************************************"); //valueOf(String objName):返回枚举类中对象名是objName的对象。 //如果没有objName的枚举类对象,则抛异常IllegalArgumentException Season1 winter = Season1.valueOf("WINTER"); System.out.println(winter);五、使用enum定义枚举类之后,如何让枚举类对象分别实现接口:
SPRING("春天", "春暖花开"){ @Override public void show() { System.out.println("春天在哪里"); } }, SUMMER("夏天", "夏日炎炎"){ @Override public void show() { System.out.println("宁夏"); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)