一、什么是枚举类型,它如何使用?
1.1 在Java等一些编程语言中,枚举类型是一种基本数据类型。
1.2 它用于定义一组固定的命名常量,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
在Java中,
二、枚举的意义与书写格式
2.1枚举的意义:
1、可使代码更易读、易理解、易于维护。
2、有限的实例集合:枚举类型是一种有限的实例集合,每个实例都是该枚举类型的一个唯一的、已命名的常量。
3、类型安全:枚举类型在编译时进行静态类型检查,这意味着编译器可以检测到在使用枚举常量时的类型错误。
4、序列化支持:枚举类型默认实现了Serializable
接口,可以被序列化和反序列化。这使得可以在网络传输、存储和持久化等场景下使用枚举类型。
2.2枚举的书写格式
例如:
public enum ServiceCode {
/**
* 成功
*/
OK(20000),
/**
* 错误:请求参数格式有误
*/
ERR_BAD_REQUEST(40000);
}
其中:public :访问修饰符,可公共访问,也可省略;
enum:关键字,声明枚举类型
枚举类型名称(ServiceCode):符合Java类取名规范--大驼峰命名
OK、ERR_BAD_REQUEST等是枚举常量,用逗号分隔。每个枚举常量都是枚举类型的实例。
三、如何使用枚举类型
3.1在枚举类型中,可以定义字段和方法。例如,为每个枚举常量定义特定的属性和行为:
public enum ServiceCode {
/**
* 错误:禁止访问,无此操作权限
*/
ERR_FORBIDDEN(40300),
/**
* 错误:数据不存在
*/
ERR_NOT_FOUND(40400),
/**
* 错误:数据冲突
*/
ERR_CONFLICT(40900);
private Integer value;
ServiceCode(Integer value) {
this.value = value;
}
public Integer getValue(){
return value;
}
}
上述示例中的ServiceCode枚举类型包含了三个枚举常量,每个常量都具有一个名为value的字段和一个返回该字段值的getValue()方法。
通过这种方式,可以创建具有特定常量和自定义属性、行为的枚举类型。
3.2 枚举类型的常用方法
方法 | 用途 |
name() | 获取枚举常量的名称 |
ordinal() | 获取枚举常量的序号 |
values() | 获取枚举类型中所有的枚举常量 |
valueOf(String name) | 根据枚举常量的名称获取对应的枚举常量 |
toString() | 返回枚举常量的字符串表示 |
自定义字段和方法 | 枚举常量可以拥有自定义的字段和方法,用于提供特定的属性和行为 |
3.3 使用案例
创建一个枚举类 TestEnum
,其中包含了三个枚举常量 RED
、GREEN
和 BLACK
。以下是该示例枚举类的说明和代码分析:
public enum TestEnum {
RED("RED", 1),
GREEN("GREEN", 2),
BLACK("BLACK", 3);
private String color;
private int ori;
// 构造方法
private TestEnum(String color, int ori) {
this.color = color;
this.ori = ori;
}
// 主方法
public static void main(String[] args) {
TestEnum[] values = TestEnum.values();
for (TestEnum value : values) {
System.out.println(value + " ori: " + value.ordinal());
}
System.out.println(".....................");
System.out.println(TestEnum.valueOf("RED"));
System.out.println(".....................");
System.out.println(RED.compareTo(BLACK));
System.out.println(BLACK.compareTo(GREEN));
}
}
在这个示例中,TestEnum 枚举类具有以下特点和代码说明:
- 枚举常量:RED、GREEN 和 BLACK 是枚举类 TestEnum 的三个实例化对象,它们是唯一的、已命名的常量。
- 构造方法:枚举类的构造方法默认是私有的,只能在枚举类内部使用。在这个示例中,使用私有构造方法来为每个枚举常量设置对应的颜色和原始值。
- values() 方法:这个示例在 main() 方法中使用 TestEnum.values() 方法获取 TestEnum 枚举类中的所有枚举常量,并进行遍历输出。
- valueOf(String name) 方法:通过 TestEnum.valueOf("RED") 可以获取枚举常量名为 “RED” 的枚举对象。
- ordinal() 方法:枚举常量的 ordinal() 方法返回它们在枚举类型中定义的顺序值(从0开始)。
- compareTo() 方法:通过 RED.compareTo(BLACK) 和 BLACK.compareTo(GREEN) 可以比较两个枚举常量的顺序,返回一个整数值。