JAVA枚举

JAVA枚举

开发工具与关键技术:IntelliJ
作者:段涛
撰写时间:2021.5.28

在Java中,被 enum 关键字修饰的类型就是枚举类型。形式如下:
如果枚举不添加任何方法,枚举值默认为从0开始的有序数值。以 Color 枚举类型举例,它的枚举常量依次为 RED:0,GREEN:1,BLUE:2。

枚举的好处:可以将常量组织起来,统一进行管理。
枚举的典型应用场景:错误码、状态机等。
枚举类型的本质,尽管 enum 看起来像是一种新的数据类型,事实上,enum是一种受限制的类,并且具有自己的方法。

创建enum时,编译器会为你生成一个相关的类,这个类继承自 java.lang.Enum。
java.lang.Enum类声明
public abstract class Enum<E extends Enum>
implements Comparable, Serializable { … }
枚举的方法,在enum中,提供了一些基本方法:
values():返回 enum 实例的数组,而且该数组中的元素严格保持在 enum 中声明时的顺序。
name():返回实例名。
ordinal():返回实例声明时的次序,从0开始。
getDeclaringClass():返回实例所属的 enum 类型。
equals() :判断是否为同一个对象。
可以使用 == 来比较enum实例。

此外,java.lang.Enum实现了Comparable和 Serializable 接口,所以也提供 compareTo() 方法。
枚举的特性,归结起来就是一句话:除了不能继承,基本上可以将 enum 看做一个常规的类。
但是这句话需要拆分去理解,让我们细细道来。

枚举可以添加方法,在概念章节提到了,枚举值默认为从0开始的有序数值 。那么问题来了:如何为枚举显示的赋值。
枚举可以添加普通方法、静态方法、抽象方法、构造方法
Java 虽然不能直接为实例赋值,但是它有更优秀的解决方案:为 enum 添加方法来间接实现显示赋值。
创建 enum 时,可以为其添加多种方法,甚至可以为其添加构造方法。

注意一个细节:如果要为enum定义方法,那么必须在enum的最后一个实例尾部添加一个分号。此外,在enum中,必须先定义实例,不能将字段或方法定义在实例前面。否则,编译器会报错。
例:展示如何在枚举中定义构造方法
// 构造方法:enum的构造方法只能被声明为private权限或不声明权限
private ErrorCode(int number) { // 构造方法
this.code = number;

上一篇:C语言速记3(


下一篇:enum枚举