Java中使用String字符串作为switch的分支

在项目中经常遇到需要根据不同的条件判断输出结果的情况,通常想到的就是if/else if/else结构了,再进一步就会想到switch,特别是种类比较多的时候,但是switch有个特别不好的地方,就是不能用String,1.7以下的JDK,switch只能传int,char,和enum三种类型,根本不支持String。String转成int,char的可能性比较小——除非是数字、字符,所以还是想着将String弄成枚举比较靠谱。

这里以”文件下载功能模块中的根据文件类型返回不同的header类型“为例。

1、建一个枚举类,规定所有的文件类型,并提供方法获取类型:

public enum FileType{
	//规定文件类型
	DOC,DOCX,PDF,TXT,XLS,XLSX,PPT,PPTX,BMP,GIF,IEF,JPEG,
	JPG,PNG,TIFF,TIF;
	
	//提供方法用来获取文件类型
	public static FileType getFileType(String fileType){
		return valueOf(fileType.toUpperCase());
	}
}

2、定义各种文件类型对应的content-type:

/**
 * 该方法用来获取下载文件的文件类型
 * @param fileName:文件名称,文件名称+.+后缀名
 * */
public static String getContentType(String fileName){
	String contentType="";
	//校验
	if(fileName==null || fileName.trim().length()<=0 || fileName.lastIndexOf(".")<=0) return "";
	fileName = fileName.trim();
	String extName = fileName.substring(fileName.lastIndexOf(".")+1).toUpperCase();
    //System.out.println("后缀为:"+extName);
    switch(FileType.getFileType(extName)){
        case DOC:contentType="application/msword";break;
        case DOCX:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document";break;
        case PDF:contentType="application/pdf";break;
        case TXT:contentType="text/html";break;
        case XLS:contentType="application/vnd.ms-excel";break;
        case XLSX:contentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";break;
        case PPT:contentType="application/vnd.ms-powerpoint";break;
        case PPTX:contentType="application/vnd.openxmlformats-officedocument.presentationml.presentation";break;
        case BMP:contentType="image/bmp";break;
        case GIF:contentType="image/gif";break;
        case IEF:contentType="image/ief";break;
        case JPEG:contentType="image/jpeg";break;
        case JPG:contentType="image/jpeg";break;
        case PNG:contentType="image/png";break;
        case TIFF:contentType="image/tiff";break;
        case TIF:contentType="image/tif";break;
    }
	return contentType;
}

3、main方法进行测试:

public static void main(String[] args){
	String fileName="1001.jpg";
	String contentType = getContentType(fileName);
	System.out.println("content-type:"+contentType);
}

猜你喜欢

转载自1017401036.iteye.com/blog/2286309