#java--枚举的实际应用

枚举的出现是用来代替有限元素的数组,数组一点不好的是,它的元素一旦被存放进去就“不可见”了,这对于程序员来说是一件痛苦的事,而枚举的意义在于有限的元素个数,而且是“可预见”的,这一点非常重要,它再软件开发中的一点价值就是,可以规避用户的“不友好”的试探操作产生的异常。例如,现在有一个需求:图片的后缀由用户动态输入,这是一件很危险的事情,因为你无法预料到用户会输入什么稀奇古怪的字符。我们可以使用枚举“限制”用户的操作,这就像前段中的下拉选择框一样,在有限的下拉列表中进行选取。代码如下所示。

package com.yx.yzh.enums;
public enum QRCodePictureTypeEnum {
	JPG,PNG,GIF,JPEG
}

1、我们可以将其应用到相应的方法中:

public static String uploadLogoQRCode(String content,String logoPicFilePathAndName,String exportFilePath,String exportFileName,**QRCodePictureTypeEnum qRCodePictureTypeEnum**,int width){
	/*String qRCodeFormat = ""; 
	//判断文件类型
	if(qRCodePictureTypeEnum == QRCodePictureTypeEnum.GIF){
		qRCodeFormat = "gif";
	}else if(qRCodePictureTypeEnum == QRCodePictureTypeEnum.JPEG){
		qRCodeFormat = "jpeg";
	}else if(qRCodePictureTypeEnum == QRCodePictureTypeEnum.JPG){
		qRCodeFormat = "jpg";
	}else if(qRCodePictureTypeEnum == QRCodePictureTypeEnum.PNG){
		qRCodeFormat = "png";
	}*/
	
	File exportFilePathObj = new File(exportFilePath);
	if(!exportFilePathObj.exists()){
		exportFilePathObj.mkdirs();
	}
	//获取导出文件对象
	File exportFile = new File(exportFilePath+"\\"+exportFileName+"."+qRCodePictureTypeEnum.toString().toLowerCase());
    try{
    	//获取图片流
        BufferedImage bim = MatrixToImageWriter.getQRCodeBufferedImage(content, BarcodeFormat.QR_CODE, width);
        //生成带logo的二维码图片
        return MatrixToImageWriter.addLogoToQRCode(bim, new File(logoPicFilePathAndName),exportFile,width);
    }
    catch (Exception e){
        e.printStackTrace();
    }
    return null;
}  

这样一来,用户就只能在QRCodePictureTypeEnum qRCodePictureTypeEnum这个位置输入枚举中的元素了,可以规避一些用户非法操作,值得注意的是,使用枚举.元素返回的是枚举引用类型,通过枚举引用.toString()可以获得枚举元素的字符形式,这是两个很有用的技巧。

2、枚举项与构造器
package com.yx.yzh.webtest;
public enum MyGender {
MAN(0,“男”), WOMEN(1,“女”);

private final int value;
private final String name;

Gender(int value, String name) {
	this.value = value;
	this.name = name;
}

public int getValue() {
	return value;
}

public String getName() {
	return name;
}


/**
System.out.println(MyGender.MAN.getName());
output:

*/

3、枚举项可以是方法

package com.yx.yzh.webtest;
public enum MyOrderState {
    /** 已取消 */
    CANCEL {public String getName(){return "已取消";}},
    /** 待审核 */
    WAITCONFIRM {public String getName(){return "待审核";}},
    /** 等待付款 */
    WAITPAYMENT {public String getName(){return "等待付款";}},
    /** 正在配货 */
    ADMEASUREPRODUCT {public String getName(){return "正在配货";}},
    /** 等待发货 */
    WAITDELIVER {public String getName(){return "等待发货";}},
    /** 已发货 */
    DELIVERED {public String getName(){return "已发货";}},
    /** 已收货 */
    RECEIVED {public String getName(){return "已收货";}};
    
    public abstract String getName();
}

/**
System.out.println(MyOrderState.CANCEL.getName());
output:
已取消
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值