enum的使用

最近在寫一些業(yè)務處理,實現(xiàn)對項目中通過模型計算產(chǎn)生的數(shù)據(jù)進行分類時,由于數(shù)據(jù)的類型都已經(jīng)固定,突然想到enum這種數(shù)據(jù)類型,于是進行嘗試,發(fā)現(xiàn)enum的使用讓代碼可讀性、規(guī)范性大大提升,而且代碼也顯得更加優(yōu)雅。

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

其具體詳細的介紹可以查看我轉(zhuǎn)載的《java enum(枚舉)使用詳解+總結(轉(zhuǎn)載)》

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

下面是我在項目中使用enum類型的具體情境:

1、故事:

先需要將一個List中的所有內(nèi)容按照標識變量分為確定數(shù)量的類型,并裝入各個子類型List中。

總的List:List<ghyztpg> totalManagerPSList ?(不要吐槽此時的模型類命名,由于需要做特殊映射定義這么不規(guī)范的名字。。)

標識變量:.VoClass.getAnalyseType()

所有子類型的列表集中到一個類中:PublicServiceSubClass

2、實現(xiàn):

1)子類型list集合PublicServiceSubClass:

public classPublicServiceSubClass {

//醫(yī)療衛(wèi)生設施

ListmedicalHygineList=newArrayList<>();

//文化娛樂設施

ListcultureEntertainmentList=newArrayList<>();

//體育設施

ListPEList=newArrayList<>();

//社會福利與保障設施

ListsocialwelfareList=newArrayList<>();

//行政管理與社區(qū)服務

ListadministrativeList=newArrayList<>();

//社區(qū)商業(yè)及其它服務設施

ListcommunicateBusinessList=newArrayList<>();

//市政公用設施

ListmunicipalList=newArrayList<>();

//社區(qū)綠地與避難疏散設施

ListcommunityGreenSpaceList=newArrayList<>();

...getter,setter方法省略

}

2)模型類ghyztpg:

public class ?ghyztpg {

intid;

/**********************公服配置屬性*****************************/

//類別,例如醫(yī)療衛(wèi)生設施

StringitemType;

StringitemName;

//規(guī)劃調(diào)整前的配置數(shù)量

StringstatusNum;

//規(guī)劃調(diào)整前的用地面積

StringstatusLandArea;

//規(guī)劃調(diào)整前的建筑面積

StringstatusBuildArea;

//規(guī)劃調(diào)整后的配置數(shù)量

StringadjustNum;

//規(guī)劃調(diào)整后的用地面積

StringadjustLandArea;

//規(guī)劃調(diào)整后的建筑面積

StringadjustBuildArea;

//配置標準數(shù)量

StringstandardNum;

//配置標準用地面積的上下限

StringstandardLandArea;

//配置標準建筑面積的上下限

StringstandardBuildArea;

//預警結果,1代表通過,0代表不通過

StringcompareValue;

/********************用地統(tǒng)計屬性*******************************/

//統(tǒng)計單元的名稱,如一農(nóng)

StringstatsRegionName;

//指標名稱

StringindexName;

//規(guī)劃總量值

StringplanTotal;

//調(diào)整規(guī)模值

StringadjustTotal;

//差值

StringdValue;

..省略getter,setter

}

3)enum定義與內(nèi)置業(yè)務處理方法(往子類型數(shù)組中插入值)

enum TYPES{

醫(yī)療衛(wèi)生設施,文化娛樂設施,體育設施,社會福利與保障設施,行政管理與社區(qū)服務,社區(qū)商業(yè)及其它服務設施,市政公用設施,社區(qū)綠地與避難疏散設施;

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

switch(type){

case醫(yī)療衛(wèi)生設施:

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社區(qū)商業(yè)及其它服務設施:

publicServiceSubClass.getCommunicateBusinessList().add(vo);

break;

case社區(qū)綠地與避難疏散設施:

publicServiceSubClass.getCommunityGreenSpaceList().add(vo);

break;

case行政管理與社區(qū)服務:

publicServiceSubClass.getAdministrativeList().add(vo);

break;

}

}

}

該類型必須放在類的最前面否則報錯。

4)enum使用

totalManagerPSList.forEach(vo->{

if(vo.getItemType().equals(TYPES.醫(yī)療衛(wèi)生設施.toString()))

TYPES.getType(TYPES.醫(yī)療衛(wèi)生設施,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.社區(qū)商業(yè)及其它服務設施.toString()))

TYPES.getType(TYPES.社區(qū)商業(yè)及其它服務設施,managementUnitPSClass,vo);

else if(vo.getItemType().equals(TYPES.社區(qū)綠地與避難疏散設施.toString()))

TYPES.getType(TYPES.社區(qū)綠地與避難疏散設施,managementUnitPSClass,vo);

else if(vo.getItemType().equals(TYPES.行政管理與社區(qū)服務.toString()))

TYPES.getType(TYPES.行政管理與社區(qū)服務,managementUnitPSClass,vo);

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

});


3、總結:

通過上述步驟就能完成數(shù)據(jù)結果的固定類型分類,相較于之前使用的直接聲明list后分類,雖然內(nèi)容可能更加復雜,但是代碼的可讀性更好且結構更分明。

本人還在編程思想學習的路上苦苦掙扎,喜歡記錄下自己靈光一閃的一些嘗試,渴求各路大神的意見指點!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容