枚举对应对应英文enumeration,简写为enum。
枚举是一组常量的集合,可以理解为:枚举属于一种特殊的类,里面只包含一组有限的特定的对象。
枚举实现的两种方式
1)自定义类实现枚举。
2)使用 enum 关键字实现枚举。
自定义实现枚举的步骤如下:
1、 构造器私有化, 目的防止直接 new。
2、 删除setXxx方法, 防止属性被修改。
3 、在Season内部, 直接创建固定的对象。
public class Enumeration01 { public static void main(String[] args) { System.out.println(Season.SPRING); System.out.println(Season.AUTUMN); } } class Season{ private String name; private String desc;//描述 //定义了 4 个对象, 固定 public static final Season SPRING = new Season("春天","温暖"); public static final Season WINTER = new Season("冬天","寒冷"); public static final Season AUTUMN = new Season("秋天","凉爽"); public static final Season SUMMER = new Season("夏天","炎热"); //1、 构造器私有化, 目的防止直接 new。 //2、 删除setXxx方法, 防止属性被修改。 //3 、在Season内部, 直接创建固定的对象。 //4、 可以加入 final 修饰符 private Season(String name, String desc) { this.name = name; this.desc = desc; } public String getName() { return name; } public String getDesc() { return desc; } }
小结 自定义类实现枚举:
1、 不需要提供 setXxx 方法,因为枚举类型对象值通常为只读。
2、枚举类对象/属性使用 final + static 共同修饰,实现底层优化。
3、枚举对象名通常全部使用大写,常量的命名规范。
4、 枚举对象根据需要,可以有多个属性。
有以下特点:
1)构造器私有化
2)本类内部创建一组对象【例如 : 四个春夏秋冬】。
3)对外暴露对象(通过为对象添加修饰符public final static 修饰)。
4)可以提供 get 方法,但是不要提供 set。
使用 enum 关键字实现枚举步骤如下:
1、 使用关键字 enum 来代替 class
2、直接使用SPRING("春天",”温暖“); 即 常量名(实参列表)。
3、如果有多个常量(对象),使用 逗号 进行间隔。
enum Season2{ //1、 使用关键字 enum 来代替 class //2、直接使用SPRING("春天",”温暖“); 即 常量名(实参列表)。 //3、如果有多个常量(对象),使用 逗号 进行间隔。 //4、如果使用enum来实现枚举,要求将所定义的常量对象,写在最前面。 SPRING("春天","温暖"), WINTER("冬天","寒冷"), AUTUMN("秋天","凉爽"); private String name; private String desc;//描述 private Season2(String name, String desc) { this.name = name; this.desc = desc; } public String getName() { return name; } public String getDesc() { return desc; } }
使用enum关键字的注意事项:
1、当我们使用enum 关键字开发一个枚举类时,会默认继承Enum类,而且是一个final类 。
2、传统的 public static final Season SPRING = new Season("春天","温暖"); 简化成 SPRING("春天","温暖"); 这里必须知道,它调用的是哪一个构造器。
3、 如果使用无参构造器 创建 枚举对象,则实参列表和小括号都可以省略。
enum Season{ SPRING; // 等价于 SPRING(); private Season{ } }
4、当有多个枚举对象时,使用逗号间隔,最后一个使用分号。
5、枚举对象必须放在枚举类的行首。