目录
枚举的声明形式
本文价值最高的是 第三种 举例
第一种 静态变量
public enum Str0Enum {
INIT,ACTICVE,FREEZE;
}
第二种 含一个值
public enum Str1Enum {
INIT("初始状态"),
ACTIVE("激活状态"),
FREEZE("冻结状态");
private String name;
public String getName() {
return name;
}
Str1Enum(String name){
this.name=name;
}
}
第三种-重点关注里面包含的静态方法
包含了 通过 枚举名字、枚举序数(从0开始)、枚举key、枚举value 返回枚举的方法
其中 通过 枚举名字、枚举序数(从0开始) 是JDK自带了基础方法
public enum Str2Enum {
INIT("init","初始化"),
ACTIVE("active","激活"),
FREEZE("freeze","冻结");
private String key;
private String value;
public String getKey() {
return key;
}
public String getValue() {
return value;
}
Str2Enum(String key,String value){
this.key=key;
this.value=value;
}
/**
* 根据key值得到对应的枚举类型-根据枚举内容决定是否有本方法
* @param columnName
* @return
*/
public static Str2Enum getStr2EnumByKey(String key){
if("init".equals(key)){
return INIT;
}else if("active".equals(key)){
return ACTIVE;
}else if("freeze".equals(key)){
return FREEZE;
}
return null;
}
/**
* 根据枚举 value 返回枚举-根据枚举内容决定是否有本方法
* @param value
* @return
*/
public static Str2Enum getStr2EnumByValue(String value){
if(StringUtils.isBlank(value)){
return null;
}
for(Str2Enum str2Enum:Str2Enum.values()){
if(str2Enum.getKey().equals(value)){
return str2Enum;
}
}
return null;
}
/**
* 根据枚举 value 返回枚举-根据枚举内容决定是否有本方法
* @param value
* @return
*/
public static Str2Enum getStr2EnumByValue(String value){
if("初始化".equals(value)){
return INIT;
}else if("激活".equals(value)){
return ACTIVE;
}else if("冻结".equals(value)){
return FREEZE;
}
return null;
}
/**
* 根据枚举名字返回类型-所有枚举类都可以有
* @param name
* @return
*/
public static Str2Enum getStr2EnumByName(String columnName){
return Str2Enum.valueOf(columnName);
}
/**
* 根据索引数返回枚举类型-所有枚举类都可以有
* @param index
* @return
*/
public static Str2Enum getStr2EnumByIndex(int index){
return Str2Enum.values()[index];
}
public static void main(String[] args) {
System.out.println("输出枚举名字:"+Str2Enum.ACTIVE);
System.out.println("输出枚举key:"+Str2Enum.ACTIVE.getKey());
System.out.println("输出枚举value:"+Str2Enum.ACTIVE.getValue());
System.out.println("根据 value 值获取枚举:"+Str2Enum.getStr2EnumByValue("冻结"));
System.out.println("根据 key 值获取枚举:"+Str2Enum.getStr2EnumByKey("init"));
System.out.println("根据序数获取枚举:"+Str2Enum.getStr2EnumByIndex(0));
System.out.println("根据 枚举名字 值获取枚举:"+Str2Enum.getStr2EnumByName("INIT"));
}
}
第四种 整形举例
public enum Str3Enum {
INIT(10,"初始化"),
ACTIVE(20,"激活"),
FREEZE(30,"冻结");
private int key;
private String value;
public int getKey() {
return key;
}
public String getValue() {
return value;
}
Str3Enum(int key,String value){
this.key=key;
this.value=value;
}
}
测试方法-调用第三种
public static void main(String[] args) {
System.out.println("输出枚举名字:"+Str2Enum.ACTIVE);
System.out.println("输出枚举key:"+Str2Enum.ACTIVE.getKey());
System.out.println("输出枚举value:"+Str2Enum.ACTIVE.getValue());
System.out.println("根据 value 值获取枚举:"+Str2Enum.getStr2EnumByValue("冻结"));
System.out.println("根据 key 值获取枚举:"+Str2Enum.getStr2EnumByKey("init"));
System.out.println("根据序数获取枚举:"+Str2Enum.getStr2EnumByIndex(0));
System.out.println("根据 枚举名字 值获取枚举:"+Str2Enum.getStr2EnumByName("INIT"));
}
结果
输出枚举名字:ACTIVE
输出枚举key:active
输出枚举value:激活
根据 value 值获取枚举:FREEZE
根据 key 值获取枚举:INIT
根据序数获取枚举:INIT
根据 枚举名字 值获取枚举:INIT