`

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

    博客分类:
  • Java
阅读更多

在项目中经常遇到需要根据不同的条件判断输出结果的情况,通常想到的就是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);
}

 

分享到:
评论

相关推荐

    在java switch中使用String作为分支条件

    ### 在Java Switch中使用String作为分支条件 #### 引言 在Java中,`switch`语句最初只能处理`int`、`char`以及`enum`类型的数据。然而,在实际开发过程中,有时需要根据字符串(`String`)来执行不同的逻辑分支。...

    switch不能字符串比较解决方法

    自Java 7起,Java支持在`switch`语句中使用字符串作为表达式。这使得开发人员可以直接用字符串进行比较,而无需映射它们到整数值。下面是如何使用这种方式改进原始代码: ```java public void switchCaseStr() { ...

    Java字符串查找和提取异常处理

    通过分析提供的代码示例`IndexOfAndCharAt.java`,我们将了解到如何自定义异常、读取用户输入、查找字符串中的特定字符及其位置以及如何提取字符串中指定位置的字符。 #### 自定义异常类 `MyException` 自定义异常...

    JAVA字符串类型switch的底层原理详析

    JAVA字符串类型switch的底层原理详析是指在JAVA语言中,switch语句是如何处理字符串类型的表达式的。从表面上看,switch语句似乎可以直接处理字符串类型的表达式,但是实际上,JAVA虚拟机(JVM)是如何实现的呢? ...

    第02章 Java编程基础 11 Switch分支语句

    4. **String的支持**:自Java 7开始,`switch`语句开始支持`String`类型,使得基于字符串的决策变得更加方便。 5. **常量表达式**:`expression`必须是能够计算出常量值的表达式,这意味着不能是变量或者包含方法...

    java实验报告之数组及字符串应用

    ### Java实验报告之数组及字符串应用 #### 实验目的 本次实验旨在使学生掌握Java编程的基本技能,并深入了解数组和字符串的应用。具体目标包括: 1. **熟悉上机环境及程序调试方法**:学会如何配置Java开发环境,...

    java中switch的使用及语法说明

    - **字符串支持**:从Java 7开始,`switch` 语句支持字符串作为表达式的值。这使得处理字符串更加灵活。 - **多条件匹配**:从Java 7开始,可以在同一个 `case` 语句中使用逗号分隔多个值,例如 `case 1, 2, 3: ......

    Java中的Switch语句

    这里的`expression`是一个可以计算出基本类型(如`byte`、`short`、`char`、`int`)、枚举类型(`enum`)或者从Java 7开始的字符串(`String`)的值。每个`case`后面跟着一个可能的值,如果`expression`与`case`后的...

    Java中switch实例.pdf

    在Java编程语言中,`switch`语句是一种用于实现多分支选择的控制结构,它提供了比`if...else if...else`更为简洁的代码形式。本文将深入探讨`switch`语句的概念、语法结构以及其在实际编程中的应用。 ### 1. `...

    把string类型改为char类型的实例

    在Java中,可以使用 `String` 类的 `toCharArray()` 方法来将一个字符串转换为 `char` 类型的数组。该方法非常直接且高效,适用于多种应用场景。 #### 示例代码解析 ```java String shuru = yunsuanfu.nextLine(); ...

    switch语句能否作用在byte上,能否作用在long上,能否作用在String上

    最后,关于`String`类型,虽然在Java 7之后,`switch`语句开始支持字符串,但这里指的是`String`对象,而不是`String`字面量。这意味着你可以在`switch`语句中直接使用`String`对象的引用,而不需要转换为其他类型。...

    TestSwitch

    而在Java和C#中,`switch`可以接受字符串(String)和其他特定类型,如枚举。 5. **优化与性能**:`switch`语句通常比一系列的`if...else if...else`语句运行得更快,因为编译器能够对`switch`进行优化,创建一个...

    十个最常见的Java字符串问题(翻译)

    自JDK7起,Java支持在switch语句中使用字符串。开发者可以将字符串作为条件,进行多个分支的逻辑处理。这提高了代码的可读性和易用性。 4. 字符串转换为整数 在Java中,字符串可以使用 "Integer.parseInt()" 方法...

    Java中switch判断语句典型使用实例

    在Java编程语言中,`switch`语句是一种条件控制结构,用于执行多个可能的分支中的一个,这通常比使用多个`if...else if...else`语句更简洁、易读。`switch`语句适用于执行基于变量不同值的不同操作,这里的变量通常...

    Java 零基础控制语句 - switch 语句.md

    - **字符串作为 case 值**:从 Java 7 开始,`switch` 语句支持字符串作为 case 值,这使得代码更加直观易懂。例如: ```java String str = "hello"; switch (str) { case "hello": System.out.println("欢迎...

    Java switch case 语句.docx

    - 自Java 7起,引入了对`String`类型的switch支持,但case标签必须是字符串常量或字面量。 3. **case语句**: - 每个case后面跟着要比较的值和冒号。值的数据类型必须与表达式的结果类型相同,并且必须是常量或...

    switch语句.pdf

    ### Java中的字符串switch 自Java 7开始,`switch`语句可以接受字符串(`String`)类型。这样就允许根据字符串的值来执行不同的代码块,提高了代码的可读性和灵活性。例如: ```java String day = "Wednesday"; ...

    switch选择结构

    对于`String`类型的`switch`,则比较的是字符串的内容是否相等。 2. **范围匹配**:从`Java 8`开始,`switch`可以接受`常量表达式`(如`enum`常量或`final`变量)作为`case`标签,这允许使用范围匹配,例如: ```...

    Java 实例 - enum 和 switch 语句使用源代码-详细教程.zip

    3. **String类型(Java 7及以后版本)**:从Java 7开始,字符串也被支持,使得`switch`更加强大。 4. **switch表达式(Java 12及以后版本)**:Java 12引入了“开关表达式”,使语法更简洁,如`result = switch ...

    Java基础入门教程 含习题 第06章 Java API(共43页).pptx

    在JDK7中,switch语句开始支持字符串类型,这使得基于字符串的条件分支更加便捷。 通过学习以上内容,开发者可以熟练地处理Java中的字符串、进行数学计算、生成随机数、操作日期和时间,以及更好地理解和使用Java...

Global site tag (gtag.js) - Google Analytics