枚举的两种实现方式
1)自定义类实现枚举
package com.Enum_; public class Enum_ { public static void main(String[] args) { System.out.println(Season.SPRING); System.out.println(Season.SUMMER); System.out.println(Season.AUTUMN); System.out.println(Season.WINTER); } } class Season{ //要描述的信息 private String name; private String describe; //定义四个对象,固定 //使用 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("冬天","寒冷"); //有参构造器 //将构造器私有化,防止 new private Season(String name, String describe) { this.name = name; this.describe = describe; } @Override public String toString() { return "Season{" + "name='" + name + '\'' + ", describe='" + describe + '\'' + '}'; } }
自定义实现枚举特点
1) 构造器私有化
2) 本类内部创建一组对象[四个 春夏秋冬]
3) 对外暴露对象(通过为对象添加 public final static 修饰符)
4) 可以提供 get 方法,但是不要提供 set
2)使用enum关键字实现枚举
package com.Enum_; public class Enumeration { public static void main(String[] args) { System.out.println(Season.SPRING); System.out.println(Season.SUMMER); System.out.println(Season.AUTUMN); System.out.println(Season.WINTER); } } enum Season_{ SPRING("春天","温暖"), SUMMER("夏天","炎热"), AUTUMN("秋天","凉爽"), WINTER("冬天","寒冷"); private String name; private String describe; Season_(String name, String describe) { this.name = name; this.describe = describe; } @Override public String toString() { return "Season_{" + "name='" + name + '\'' + ", describe='" + describe + '\'' + '}'; } }
enum关键字注意事项
1) 当我们使用 enum 关键字开发一个枚举类时,默认会继承 Enum 类, 而且是一个 final 类[如何证明],使用 javap 工具来演示(javac是将test.java编译成test.c,而javap正好相反)
2) 传统的 public static final Season_ SPRING = new Season_("春天", "温暖"); 简化成 SPRING("春天", "温暖"), 这里必 须知道,它调用的是哪个构造器.
3) 如果使用无参构造器 创建 枚举对象,则实参列表和小括号都可以省略,例如可直接写成XXX;
4) 当有多个枚举对象时,使用,间隔,最后有一个分号结尾
5) 枚举对象必须放在枚举类的行首.