java枚舉類關鍵字enum,是jdk1.5之後 纔有的新類型。java枚舉類在類加載的過程會創建自定義的枚舉對象,在靜態塊中進行初始化,枚舉適用於一個類的對象個數固定的情況。
1、如何創建一個枚舉類?創建一個枚舉類就和創建類的原理一樣,只是class關鍵字換成enum關鍵字,比如:
public enum Light {
RED , GREEN , YELLOW ;
}
2、java枚舉類的用法:
1)、常量,使用java枚舉類可以替代常量,因爲常量沒有命名空間,使用起來不是非常清晰,如果使用java枚舉類,就可以清晰地讀懂代碼,代碼可維護性強。
2)、switch條件語句中,switch可以只用使用java枚舉進行條件判斷,清晰明朗。
3、具體使用:
在最近的開發中,頁面上有一個 名爲 正/反例的下拉框,值爲,是 和否。使用的是boolean類型,按照之前的寫法,下拉框固定的值都寫死在頁面。但是現在老大 發話了,說這樣寫死不利於維護,也不安全,說讓寫枚舉類,行,枚舉類就枚舉類。
上代碼:
先寫一個返回下拉框數據的 model 類:
public class SelectBean implements Serializable{
private String seKey;
private String seValue;
public String getSeKey() {
return seKey;
}
public void setSeKey(String seKey) {
this.seKey = seKey;
}
public String getSeValue() {
return seValue;
}
public void setSeValue(String seValue) {
this.seValue = seValue;
}
}
後臺 枚舉類:
public enum CaseNegative {
CASENEGATIVE_ALL("","全部"),
CASENEGATIVE_JUST("0","正列"),
CASENEGATIVE_BACK("1","反列");
private String label;
private String value;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
private CaseNegative(String label, String value) {
this.label = label;
this.value = value;
}
}
頁面加載時調用 枚舉類拿值的方法:
/**
* 下拉框
* @param String
* @return list
*/
@Override
public List<SelectBean> queryEnumList(ReqObject<String> data) {
SelectBean bean;
List<SelectBean> listBean = null;
listBean=new ArrayList<SelectBean>();
for(CaseNegative e: CaseNegative.values()){
bean = new SelectBean();
bean.setSeKey(e.getLabel());
bean.setSeValue(e.getValue());
listBean.add(bean);
}
}
return listBean;
}
最後:前臺顯示 react:
<div style={{marginRight:'10px',float:'left'}}>
<label>
正反例:
</label>
<Select id="negative" defaultValue="" onChange={this.changeIsNegative.bind(this)}
>
{optsInterfaceType}
</Select>
</div>
//render 組裝數據
const {negatives,isStatus,selectedRowKeys} = this.state;
const optsInterfaceType = [];
negatives.map((item, i) => {
return optsInterfaceType.push(<Option key={item.seKey} value={item.seKey}>
{item.seValue}</Option>);
});
//調用 後臺
initIsNegative = () => {
CaseAppActions.initCaseSel();
}
結果展示: