武装到牙齿的枚举类简例
Posted godtrue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了武装到牙齿的枚举类简例相关的知识,希望对你有一定的参考价值。
之前写过一篇 判断一个枚举值是否属于某个枚举类 ,后来发现我们在实际的项目开发中常常会用到枚举类,而且还会用到一些其他的方法,所以,如下所示,我补充几个小方法以备后用!这些是我在项目中用到过的一些方法,肯定还有别的,反正写起来也比较简单,知道个思路就ok了(核心:枚举值的遍历)!
import java.util.*; /** * @Description: 控制开关的状态 * @since: JDK 1.7 * @Version: V1.0 */ public enum SwitchStatusEnum { CLOSE(0, "0-关闭"), OPEN(1, "1-开启"); private int key; private String value; SwitchStatusEnum() { } private SwitchStatusEnum(int key, String value) { this.key = key; this.value = value; } public void setKey(int key) { this.key = key; } public void setValue(String value) { this.value = value; } public int getKey() { return key; } public String getValue() { return value; } /** * 枚举类值的长度 */ public static int ENUM_VALUE_LENGTH = SwitchStatusEnum.values().length; /** * 判断枚举类的key是否属于枚举类 */ public static boolean keyIsExist(int key){ boolean include = false; for (SwitchStatusEnum e: SwitchStatusEnum.values()){ if(e.getKey()==key){ include = true; break; } } return include; } /** * 判断枚举类的value是否属于枚举类 */ public static boolean valueIsExist(String value){ boolean include = false; for (SwitchStatusEnum e: SwitchStatusEnum.values()){ if(e.getValue().equals(value)){ include = true; break; } } return include; } /** * 通过枚举key获取枚举对象 */ public static SwitchStatusEnum getEnumObjByKey(int key){ SwitchStatusEnum eo = null; for (SwitchStatusEnum e: SwitchStatusEnum.values()){ if(e.getKey()==key){ eo = e; break; } } return eo; } /** * 通过枚举value获取枚举对象 */ public static SwitchStatusEnum getEnumObjByValue(String value){ SwitchStatusEnum eo = null; for (SwitchStatusEnum e: SwitchStatusEnum.values()){ if(e.getValue().equals(value)){ eo = e; break; } } return eo; } /** * 将枚举值转换为Map */ public static Map<Integer,Object> getMapByEnum(){ Map<Integer,Object> map = new HashMap<Integer,Object>(ENUM_VALUE_LENGTH); for (SwitchStatusEnum e: SwitchStatusEnum.values()){ map.put(e.getKey(),e.getValue()); } return map; } /** * 将枚举类的key转换为Set */ public static Set<Integer> getEnumKeySet(){ Set<Integer> set = new HashSet<Integer>(ENUM_VALUE_LENGTH); for (SwitchStatusEnum e: SwitchStatusEnum.values()){ set.add(e.getKey()); } return set; } /** * 将枚举类的value转换为Set */ public static Set<String> getEnumValueSet(){ Set<String> set = new HashSet<String>(ENUM_VALUE_LENGTH); for (SwitchStatusEnum e: SwitchStatusEnum.values()){ set.add(e.getValue()); } return set; } /** * 将枚举值转换为list */ public static List<Map<String,Object>> getListByEnum(){ List<Map<String,Object>> list = new ArrayList<Map<String, Object>>(ENUM_VALUE_LENGTH); for (SwitchStatusEnum e: SwitchStatusEnum.values()){ Map<String,Object> map = new HashMap<String,Object>(); map.put("key",e.getKey()); map.put("value",e.getValue()); list.add(map); } return list; } @Override public String toString() { return "SwitchStatusEnum{" + "key=" + key + ", value=\'" + value + \'\\\'\' + \'}\'; } }
小结:
我感觉用枚举类可以基本代替一些类型固定且简单的码表来用,对于需要维护可能会变化的有些不太适用,但是也勉强可以用。用它最核心的诉求在于,维持数据的统一性降低编码的出错概率,提升代码的易读性,通过value值也能比较清楚的知道对应的枚举值的确切含义、作用、功能等等。总之,是出于代码的易读性、易维护性、统一性、健壮性来使用的。
以上是关于武装到牙齿的枚举类简例的主要内容,如果未能解决你的问题,请参考以下文章