前言开发系统的一些状态,比如订单状态:数据库存储的是数字或者字母,但是需要显示中文或者英文,一般使用if-else代码判断,但是这个判断是可读性较差,也会影响后期维护,更容易出现bug。例如:假设状态对应关系:1:同意2:拒绝3:finishintstatus;StringstatusStr=null;if(status==1){status="agree";}elseif(status==2){status="refuse";}elseif(status==3){status="finish";}解决方法一:数组只能通过数字获取字母或汉字。首先设置数组String[]statusArray={"","同意","拒绝","完成"};通过数组的位置获取数组intstatus的值;StringstatusStr=statusArray[状态];优点:占用内存少缺点:状态值只能是数字,还要考虑数组越界的情况。解决方案2:HashMap创建并添加映射:privatestaticfinalMapmap=newHashMap<>();static{map.put(1,"同意");map.put(2,"拒绝");map.put(3,"完成");}解决这个问题的方法有两种,通过key获取值和通过值获取key,通过key获取值直接使用get方法即可。与数组方案相比,这里的key不限制key的类型。intstatus;map.get(status);从value获取key使用map遍历:intstatus;for(Map.Entryvo:map.entrySet()){if(vo.getValue().equals(result)){status=vo.getKey();休息;}}优点:状态值不限制个数缺点:占用空间大方案三、枚举首先定义一个枚举类publicenumTestEum{agree(1,"agree"),refuse(2,"refuse");私有整数代码;私有字符串标题;TestEum(intcode,Stringcaption){this.code=code;this.capation=capation;}publicintgetCode(){返回代码;}publicStringgetCapation(){返回capation;}Stringof(intcode){for(TestEumtestEum:TestEum.values()){if(testEum.getCode()==code){返回testEum.getCapation();}}返回空值;}}有了枚举,if-else代码块可以优化成一行代码StringstatusStr=TestEum.of(status);综上所述,如果描述是通过数字获取的,就用数组。如果通过描述获取数字,可以同时使用枚举和HashMap。