论Java8中switch(String)的解决方案真实性
来源:互联网 发布:中国科学技术大学网络 编辑:程序博客网 时间:2024/05/21 09:44
今天在浏览博客的时候,看到一篇关于"java8中switch(String)的错误解决"的博文。具体问题是说jdk1.7支持switch(String),但是在jdk1.8中却不行,就此提出的解决方案。然而,针对jdk1.8,已经使用过一年之久的博主存在一个困惑,平时开发项目jdk1.8也有用到过switch(String),但是并未发现过此问题,想来jdk通常都是向前兼容的,不该出现此问题啊。难道我遇到是个假jdk1.8?于是就此进行了代码验证。
jdk版本以及jre版本:
代码一:
package com.jangz.syntax.nosupport;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class ValidateUtil {private static final Logger log = LoggerFactory.getLogger(ValidateUtil.class);private boolean checkName(String fileName, String name, String op) {switch(op) {case "no":return false;case "contains":return fileName.contains(name) ? true : false;case "equals":return fileName.equals(name)? true : false;case "noequal":return fileName.equals(name) ? false : true;default:log.info("wrong op:{}", op);break;}return false;}public static void main(String[] args) {String FILE_NAME = "/usr/local/share/applications/doc.txt";String NAME = "usr/local/";boolean result = new ValidateUtil().checkName(FILE_NAME, NAME, "contains");System.out.println("ValidateUtil result: " + result);}}测试结果如下:
结果显示,jdk1.8直接使用switch(String)并没有问题。
代码二:
package com.jangz.syntax.nosupport;import org.slf4j.Logger;import org.slf4j.LoggerFactory;enum op {no, contains, equals, noequal}public class ValidateUtilCor {private static final Logger log = LoggerFactory.getLogger(ValidateUtilCor.class);private boolean checkName(String fileName, String name, op p) {switch (p) {case no:return true;case contains:return fileName.contains(name) ? true : false;case equals:return fileName.equals(name) ? true : false;case noequal:return fileName.equals(name) ? false : true;default:log.info("wrong op:{}", p);break;}return false;}public static void main(String[] args) {String FILE_NAME = "/usr/local/share/applications/doc.txt";String NAME = "usr/local/";boolean result = new ValidateUtilCor().checkName(FILE_NAME, NAME, op.contains);System.out.println("ValidateUtilCor result: " + result);}}测试结果如下:
综上,jdk1.8是支持switch(String)的啊?!什么鬼?于是博主又去看了下发表该博文的日期,稍加思索,觉得应该是jdk1.8在后期的新版本中进行了修改调整吧。
不论如何,以后开发项目过程中,如果各位使用的是jdk1.8,那么可以放心使用switch(String),当然,如果也出现同样问题——jdk1.8不支持switch(String),则可以通过代码二的枚举形式进行替代解决。切不可为了使用一个语法糖就选择临时更换jdk版本,这样会得不偿失。好了,博主要开始工作了!
阅读全文
0 0
- 论Java8中switch(String)的解决方案真实性
- java8中switch(String)的错误解决
- String类不能switch…case的解决方案
- 关于博客中技术文章和非技术文章真实性的声明
- Java8 中对String扩展的方法 join
- switch 的String参数
- switch (String) 的使用
- Java7中switch支持String
- c++中switch不支持string
- Java7中Switch支持String
- Java8 String的底层实现
- Java 7新特性: switch中对String的支持
- Java 7新特性: switch中对String的支持
- Java中字符串String Switch的实现原理
- 关于switch语句中使用String类型的实现原理
- android switch 的终极解决方案
- 小议《三国志》“裴注”的真实性
- 第二篇《梦的真实性》
- kafka集群原理介绍
- 面试资料
- 分布式锁的三种实现的对比
- java eclipse项目常见报错
- Pandas知识点(四)
- 论Java8中switch(String)的解决方案真实性
- 微信支付接口的开发
- Android反编译那些事
- 多管齐下显神威-2017逐浪CMS开启全新建站与WEB技术革命
- SpringMVC+freemarker实现菜单导航的思想一
- 导出office文件中所有图片
- 如何在神箭手上快速开发爬虫——第四课 如何爬取分页数据【蘑菇街商品评论】
- Kali Linux WPScan更新到2.9.3
- linux下串口相关控制