Java基础学习(二十):枚举
目录
- Java基础学习(二十):枚举
- 概念
- 枚举的实现
- Enum 类
本文为个人学习记录,内容学习自 韩顺平Java
概念
- 枚举:enumeration,简写为 enum
- 枚举是一组常量的集合
枚举的实现
-
枚举有两种实现方式:自定义类实现枚举、使用 enum 关键字实现枚举
-
自定义类实现枚举
-
步骤:
- 新建 Javabean 文件
- 将构造器私有化:防止直接创建类的实例
- 不需要 setXxx() 方法:防止枚举对象的属性被修改
- 在类内直接创建固定的对象,即枚举对象
- (可选)使用 final 修饰符修饰创建的枚举对象
- 调用枚举对象时直接:枚举类.枚举对象
-
示例:自定义 Season 类,定义四个季节常量
public class Season {// 枚举对象的属性private String name;private String desc;// 枚举对象:SPRING、SUMMER、AUTUMN、WINTERpublic 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("冬天", "寒冷");private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;} }
-
-
使用 enum 关键字实现枚举
-
步骤:
-
使用关键字 enum 替代 class
-
public static final Season SPRING = new Season("春天", "温暖"); <==> SPRING("春天", "温暖");
-
如果有多个枚举对象,需要使用逗号间隔,最后一个使用分号结尾
-
定义枚举对象的语句必须放在最前面
-
调用枚举对象时直接:枚举类.枚举对象
-
-
示例:
enum Season {// 枚举对象:SPRING、SUMMER、AUTUMN、WINTERSPRING("春天", "温暖"), SUMMER("夏天", "炎热"), AUTUMN("秋天", "凉爽"), WINTER("冬天", "寒冷");private String name;private String desc;private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;} }
-
注意事项:
-
使用 enum 定义一个枚举类时,默认继承自 Enum 类,因此不能再继承其他类了
-
使用 enum 定义的枚举类仍然是一个类,可以实现接口
-
如果枚举常量是通过无参构造器创建的,那么小括号可以省略,例如:
SPRING(); <==> SPRING;
-
-
Enum 类
-
路径:
java.lang.Enum
-
常用方法:
class Test {public static void main(String[] args) {Season autumn = Season.AUTUMN;// name():返回该枚举对象的名字String name = autumn.name();// ordinal():返回该枚举对象的次序/编号,从0开始int index = autumn.ordinal();// values():返回所有的枚举对象Season[] values = Season.values();// valueOf():根据字符串获取枚举对象Season autumn1 = Season.valueOf("AUTUMN");// compareTo():对两个枚举对象的编号进行比较,返回值为二者编号的差值int result = autumn.compareTo(Season.SUMMER);} }