java枚举类为下拉框提供值的情况

本文深入探讨Java枚举类的创建与使用,介绍其作为常量替代方案的优势,以及在switch语句中的应用。通过实例演示枚举类如何增强代码的可读性和可维护性,同时展示枚举类的内置方法如valueOf()和values()的实用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java枚举类关键字enum,是jdk1.5之后 才有的新类型。java枚举类在类加载的过程会创建自定义的枚举对象,在静态块中进行初始化,枚举适用于一个类的对象个数固定的情况。

1、如何创建一个枚举类?创建一个枚举类就和创建类的原理一样,只是class关键字换成enum关键字,比如:

public enum Light {
    RED , GREEN , YELLOW ;
}

2、java枚举类的用法:

      1)、常量,使用java枚举类可以替代常量,因为常量没有命名空间,使用起来不是非常清晰,如果使用java枚举类,就可以清晰地读懂代码,代码可维护性强。

      2)、switch条件语句中,switch可以只用使用java枚举进行条件判断,清晰明朗。

      3)、枚举类默认的构造函数实用private 修饰,可以不写,如果写了,不能用public 修饰,否则编译报错。底层用final修饰不能被继承。

      4)、枚举类自带一些很实用的方法:valueOf() ,values(),等。

               valueOf();  它的作用是传来一个字符串,然后将它转变为对应的枚举变量。前提是你传的字符串和定义枚举变量的字符串一抹一样,区分大小写。如果你传了一个不存在的字符串,那么会抛出异常。

               values():  这个方法会返回包括所有枚举变量的数组。

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();
}

结果展示:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值