一、说明
在 java 编程过程中,我们通常需要定义一些固定数量的常量,在 jdk1.5 以前,通常的做法是定义一个静态常量类,但自 jdk1.5 后,java 引入了枚举(关键字 enum,全称为 enumeration,值类型),在枚举中,我们可以把相关的常量分组到一个枚举类型里,枚举也比常量类有更多灵活的用法,使用枚举,可以有效的提高代码的整洁性、可读性、可维护性等等,这里简单总结一下常用的枚举用法。
二、例子
- 测试枚举类 EnumExample.java
/**
* 枚举测试类
*
* @author dhsg
* @date 2019-10-17
*/
public enum EnumExample {
/**
* 性别的定义
*/
MAN(0, "男"),
WOMEN(1, "女"),
UNKNOWN(2, "未知");
/**
* 编码
*/
private int code;
/**
* 描述信息
*/
private String value;
/**
* 构造函数
*
* @param code 编码
* @param value 描述信息
*/
EnumExample(int code, String value) {
this.code = code;
this.value = value;
}
/**
* 获取编码
*
* @return 编码
*/
public int getCode() {
return code;
}
/**
* 获取描述信息
*
* @return 描述信息
*/
public String getValue() {
return value;
}
/**
* 根据编码返回对应的EnumExample
* 如果不存在对应的EnumExample,则返回null
*
* @param code 编码
* @return EnumExample
*/
public static EnumExample getEnumExampleByCode(int code) {
//遍历当前的枚举类
for (EnumExample enumExample : EnumExample.values()) {
if (enumExample.getCode() == code) {
return enumExample;
}
}
return null;
}
/**
* 根据描述信息返回对应的EnumExample
* 如果不存在对应的EnumExample,则返回null
*
* @param value 描述信息
* @return EnumExample
*/
public static EnumExample getEnumExampleByValue(String value) {
//遍历当前的枚举类
for (EnumExample enumExample : EnumExample.values()) {
if (value.equals(enumExample.getValue())) {
return enumExample;
}
}
return null;
}
/**
* 根据编码返回对应的EnumExample的描述信息
* 如果不存在对应的EnumExample,则返回null
*
* @param code 编码
* @return 描述信息
*/
public static String getValueByCode(int code) {
EnumExample enumExample = getEnumExampleByCode(code);
if (enumExample != null) {
return enumExample.getValue();
} else {
return null;
}
}
/**
* 根据描述信息返回对应的EnumExample的编码
* 如果不存在对应的EnumExample,则返回null
*
* @param value 描述信息
* @return 编码
*/
public static Integer getCodeByValue(String value) {
EnumExample enumExample = getEnumExampleByValue(value);
if (enumExample != null) {
return enumExample.getCode();
} else {
return null;
}
}
}
- 使用
System.out.println(EnumExample.MAN);
System.out.println(EnumExample.MAN.getCode());
System.out.println(EnumExample.MAN.getValue());
System.out.println(EnumExample.WOMEN);
System.out.println(EnumExample.WOMEN.getCode());
System.out.println(EnumExample.WOMEN.getValue());
System.out.println(EnumExample.UNKNOWN);
System.out.println(EnumExample.UNKNOWN.getCode());
System.out.println(EnumExample.UNKNOWN.getValue());
System.out.println(EnumExample.getEnumExampleByCode(0));
System.out.println(EnumExample.getValueByCode(0));
System.out.println(EnumExample.getCodeByValue("男"));
System.out.println(EnumExample.getEnumExampleByCode(1));
System.out.println(EnumExample.getValueByCode(1));
System.out.println(EnumExample.getCodeByValue("女"));
System.out.println(EnumExample.getEnumExampleByCode(2));
System.out.println(EnumExample.getValueByCode(2));
System.out.println(EnumExample.getCodeByValue("未知"));
System.out.println(EnumExample.getEnumExampleByCode(3));
System.out.println(EnumExample.getValueByCode(3));
System.out.println(EnumExample.getCodeByValue("XXX"));
-
结果
网友评论