一、背景及定义
情景:
枚举是在JDK1.5以后引入的。
主要用途是:
将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式:
这种定义方式实际上并不好。
例如:如果碰巧有另一个变量也是1,那么编译器可能就会误认为是RED。
为了避免这种情况,可以使用枚举类型,把这些变量组织起来。
这样的话,三种变量(RED、GREEN、BLACK)就有了自己的类型,枚举类型。
这样就很好的区分出来了,RED不在是简单的1.
定义:
enum——枚举类型,是一个类,继承自Enum类。
实际上枚举类型就是一个特殊的自定义类型。
代码中的Happy、Enjoy等等,类型都是EnumTest。
注意:
虽然他们的值都是数字(默认从0开始,然后递增),但是,是不能强制类型转换的!:
因为EnumTest类型和int毫不相干。
二、Enum类中常用的方法(重要)
方法名 | 描述 |
自定义枚举类.values() | 以数组的形式,返回枚举类型中的所有成员 |
自定义枚举类.valueOf(String 成员名字) | 讲普通字符串,转化为枚举实例 |
自定义枚举类.ordinal(String 成员名字) | 返回枚举类中某一个成员的索引位置 |
枚举成员.compareTo(枚举成员) | 比较两个枚举成员的顺序(返回:左-右) |
代码式例:
values()方法:
执行结果:
ordinal()方法:
执行结果:
valueOf()方法:
执行结果:
compareTo()方法:
执行结果:
三、枚举类的构造方法(重要)
枚举类的构造方法很特殊,
默认是private修饰的,并且自己提供构造方法,也只能用private修饰:
又因为枚举类型的构造方法只能是private修饰的,因此这个类不能被继承。
因为如果要继承这个类,需要调用枚举类的构造方法,但是它的构造方法是private的,不能调用。
四、枚举的优缺点
优点:
1.枚举常量更简单安全
2.内置方法,代码更简洁
缺点:
不可继承,无法扩展。
补充
在Java SE阶段,我们学过,switch语句中case 值的范围:
现在学了枚举,那我们就来演示一下:
执行结果:
完