美文网首页
enum的使用

enum的使用

作者: 焱魔王 | 来源:发表于2017-09-12 16:41 被阅读0次

    最近在写一些业务处理,实现对项目中通过模型计算产生的数据进行分类时,由于数据的类型都已经固定,突然想到enum这种数据类型,于是进行尝试,发现enum的使用让代码可读性、规范性大大提升,而且代码也显得更加优雅。

    enum是jdk1.5中引入的新特性,存放在java.lang包中。

    其具体详细的介绍可以查看我转载的《java enum(枚举)使用详解+总结(转载)》

    原始地址为:http://www.cnblogs.com/hyl8218/p/5088287.html

    下面是我在项目中使用enum类型的具体情境:

    1、故事:

    先需要将一个List中的所有内容按照标识变量分为确定数量的类型,并装入各个子类型List中。

    总的List:List<ghyztpg> totalManagerPSList  (不要吐槽此时的模型类命名,由于需要做特殊映射定义这么不规范的名字。。)

    标识变量:.VoClass.getAnalyseType()

    所有子类型的列表集中到一个类中:PublicServiceSubClass

    2、实现:

    1)子类型list集合PublicServiceSubClass:

    public classPublicServiceSubClass {

    //医疗卫生设施

    ListmedicalHygineList=newArrayList<>();

    //文化娱乐设施

    ListcultureEntertainmentList=newArrayList<>();

    //体育设施

    ListPEList=newArrayList<>();

    //社会福利与保障设施

    ListsocialwelfareList=newArrayList<>();

    //行政管理与社区服务

    ListadministrativeList=newArrayList<>();

    //社区商业及其它服务设施

    ListcommunicateBusinessList=newArrayList<>();

    //市政公用设施

    ListmunicipalList=newArrayList<>();

    //社区绿地与避难疏散设施

    ListcommunityGreenSpaceList=newArrayList<>();

    ...getter,setter方法省略

    }

    2)模型类ghyztpg:

    public class  ghyztpg {

    intid;

    /**********************公服配置属性*****************************/

    //类别,例如医疗卫生设施

    StringitemType;

    StringitemName;

    //规划调整前的配置数量

    StringstatusNum;

    //规划调整前的用地面积

    StringstatusLandArea;

    //规划调整前的建筑面积

    StringstatusBuildArea;

    //规划调整后的配置数量

    StringadjustNum;

    //规划调整后的用地面积

    StringadjustLandArea;

    //规划调整后的建筑面积

    StringadjustBuildArea;

    //配置标准数量

    StringstandardNum;

    //配置标准用地面积的上下限

    StringstandardLandArea;

    //配置标准建筑面积的上下限

    StringstandardBuildArea;

    //预警结果,1代表通过,0代表不通过

    StringcompareValue;

    /********************用地统计属性*******************************/

    //统计单元的名称,如一农

    StringstatsRegionName;

    //指标名称

    StringindexName;

    //规划总量值

    StringplanTotal;

    //调整规模值

    StringadjustTotal;

    //差值

    StringdValue;

    ..省略getter,setter

    }

    3)enum定义与内置业务处理方法(往子类型数组中插入值)

    enum TYPES{

    医疗卫生设施,文化娱乐设施,体育设施,社会福利与保障设施,行政管理与社区服务,社区商业及其它服务设施,市政公用设施,社区绿地与避难疏散设施;

    public static voidgetType(TYPES type,PublicServiceSubClass publicServiceSubClass,ghyztpg vo){

    switch(type){

    case医疗卫生设施:

    publicServiceSubClass.getMedicalHygineList().add(vo);

    break;

    case体育设施:

    publicServiceSubClass.getPEList().add(vo);

    break;

    case市政公用设施:

    publicServiceSubClass.getMunicipalList().add(vo);

    break;

    case文化娱乐设施:

    publicServiceSubClass.getCultureEntertainmentList().add(vo);

    break;

    case社会福利与保障设施:

    publicServiceSubClass.getSocialwelfareList().add(vo);

    break;

    case社区商业及其它服务设施:

    publicServiceSubClass.getCommunicateBusinessList().add(vo);

    break;

    case社区绿地与避难疏散设施:

    publicServiceSubClass.getCommunityGreenSpaceList().add(vo);

    break;

    case行政管理与社区服务:

    publicServiceSubClass.getAdministrativeList().add(vo);

    break;

    }

    }

    }

    该类型必须放在类的最前面否则报错。

    4)enum使用

    totalManagerPSList.forEach(vo->{

    if(vo.getItemType().equals(TYPES.医疗卫生设施.toString()))

    TYPES.getType(TYPES.医疗卫生设施,managementUnitPSClass,vo);

    else if(vo.getItemType().equals(TYPES.体育设施.toString()))

    TYPES.getType(TYPES.体育设施,managementUnitPSClass,vo);

    else if(vo.getItemType().equals(TYPES.市政公用设施.toString()))

    TYPES.getType(TYPES.市政公用设施,managementUnitPSClass,vo);

    else if(vo.getItemType().equals(TYPES.文化娱乐设施.toString()))

    TYPES.getType(TYPES.文化娱乐设施,managementUnitPSClass,vo);

    else if(vo.getItemType().equals(TYPES.社会福利与保障设施.toString()))

    TYPES.getType(TYPES.社会福利与保障设施,managementUnitPSClass,vo);

    else if(vo.getItemType().equals(TYPES.社区商业及其它服务设施.toString()))

    TYPES.getType(TYPES.社区商业及其它服务设施,managementUnitPSClass,vo);

    else if(vo.getItemType().equals(TYPES.社区绿地与避难疏散设施.toString()))

    TYPES.getType(TYPES.社区绿地与避难疏散设施,managementUnitPSClass,vo);

    else if(vo.getItemType().equals(TYPES.行政管理与社区服务.toString()))

    TYPES.getType(TYPES.行政管理与社区服务,managementUnitPSClass,vo);

    elseSystem.out.print("未知的管理单元公服配置子类型!");

    });

    3、总结:

    通过上述步骤就能完成数据结果的固定类型分类,相较于之前使用的直接声明list后分类,虽然内容可能更加复杂,但是代码的可读性更好且结构更分明。

    本人还在编程思想学习的路上苦苦挣扎,喜欢记录下自己灵光一闪的一些尝试,渴求各路大神的意见指点!

    相关文章

      网友评论

          本文标题:enum的使用

          本文链接:https://www.haomeiwen.com/subject/uswcsxtx.html