论Java8中switch(String)的解决方案真实性
发布日期:2021-06-29 12:23:50
浏览次数:3
分类:技术文章
本文共 2262 字,大约阅读时间需要 7 分钟。
今天在浏览博客的时候,看到一篇关于"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版本,这样会得不偿失。好了,博主要开始工作了!
转载地址:https://buildupchao.blog.csdn.net/article/details/77154881 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月27日 17时21分34秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
买卖股票的最佳时机
2019-04-29
AUC粗浅理解笔记记录
2019-04-29
torch 模型运行时间与forward没对应的可能原因
2019-04-29
JavaScript 的addEventListener() 事件监听详解!
2019-04-29
上传图片到阿里云OSS和获取上传图片的url的详解 !
2019-04-29
Kafka为什么这么快?
2019-04-29
Java 生产者和消费者面试题
2019-04-29
生产者消费者问题
2019-04-29
本机电脑连接虚拟机redis失败解决方法
2019-04-29
DM365 应用层gpio控制
2019-04-29
linux i2c子系统abc
2019-04-29
CSS3 帧动画(Sprite,直译叫雪碧图)
2019-04-29
Java 父线程与子线程相互通信的方法
2019-04-29
Redis 六种淘汰策略和三种删除策略
2019-04-29
Java LinkedHashMap
2019-04-29
JPA 多线程同时对一条数据进行Update的问题
2019-04-29
JPA 多线程对数据进行更新,Update和Insert同时存在的问题
2019-04-29
Java 高性能队列Disruptor
2019-04-29
SpringBoot 使用https
2019-04-29
Java 读写锁
2019-04-29