论Java8中switch(String)的解决方案真实性 客官°小女子只卖身不卖艺 2022-06-10 07:55 440阅读 0赞 今天在浏览博客的时候,看到一篇关于"java8中switch(String)的错误解决"的博文。具体问题是说jdk1.7支持switch(String),但是在jdk1.8中却不行,就此提出的解决方案。然而,针对jdk1.8,已经使用过一年之久的博主存在一个困惑,平时开发项目jdk1.8也有用到过switch(String),但是并未发现过此问题,想来jdk通常都是向前兼容的,不该出现此问题啊。难道我遇到是个假jdk1.8?于是就此进行了代码验证。 jdk版本以及jre版本: ![Center][] 代码一: 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); } } 测试结果如下: ![Center 1][] 结果显示,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); } } 测试结果如下: ![Center 2][] 综上,jdk1.8是支持switch(String)的啊?!什么鬼?于是博主又去看了下发表该博文的日期,稍加思索,觉得应该是jdk1.8在后期的新版本中进行了修改调整吧。 ![Center 3][] 不论如何,以后开发项目过程中,如果各位使用的是jdk1.8,那么可以放心使用switch(String),当然,如果也出现同样问题——jdk1.8不支持switch(String),则可以通过代码二的枚举形式进行替代解决。切不可为了使用一个语法糖就选择临时更换jdk版本,这样会得不偿失。好了,博主要开始工作了! [Center]: /images/20220610/7c9c1834467c4a55a1a702fdc277d17e.png [Center 1]: /images/20220610/6d06109a55b8419dbc3b8020589ec45f.png [Center 2]: /images/20220610/d21cd213ecfb484985ac16949583fd59.png [Center 3]: /images/20220610/1b7beb6550e0429480f89bdfdb816b46.png
相关 Java 8新特性:Stream API中的问题与解决方案 在Java 8引入的Stream API中,确实存在一些问题和相应的解决方案。以下是一些常见的问题及其解决方法: 1. **并行处理**:Stream API允许对数据进行并 淡淡的烟草味﹌/ 2024年10月18日 02:33/ 0 赞/ 41 阅读
相关 Java中的NullPointerException:原因与解决方案 在Java中,NullPointerException通常发生在尝试访问null对象的属性或方法时。简单来说,就是你试图操作一个没有的东西。 解决NullPointerExc 忘是亡心i/ 2024年09月26日 07:36/ 0 赞/ 58 阅读
相关 Java 8 Stream API 应用中的常见问题及解决方案 在使用Java 8 Stream API进行处理时,可能会遇到一些常见的问题。以下是这些问题以及相应的解决策略: 1. **性能问题**:当数据量较大时,Stream API 喜欢ヅ旅行/ 2024年09月21日 00:24/ 0 赞/ 53 阅读
相关 Java 8流处理:常见问题及解决方案 Java 8的Stream API为大规模数据处理带来了极大的便利。然而,在实际使用中,可能会遇到一些问题。以下是一些常见的问题及解决方案: 1. **性能问题**:当处理大 ゞ 浴缸里的玫瑰/ 2024年09月10日 10:06/ 0 赞/ 43 阅读
相关 数据分析中的秘密——探究数字的规律与真实性 数据分析中的秘密——探究数字的规律与真实性 在数据分析领域,Benford定律是一个经典的规律,它指出在许多现实世界中的数字集合中,数字1是最显著的数字。本福特定律又是一个重 ゝ一世哀愁。/ 2024年03月16日 17:18/ 0 赞/ 58 阅读
相关 论java中可变参数 论java中可变参数 / ...可变参数 当... 作为形参时,传入的实参是可变的 在方法体内部,仍然可将可变参数当成数组使用 迈不过友情╰/ 2022年11月16日 15:10/ 0 赞/ 152 阅读
相关 论Java8中switch(String)的解决方案真实性 今天在浏览博客的时候,看到一篇关于"java8中switch(String)的错误解决"的博文。具体问题是说jdk1.7支持switch(String),但是在jdk1.8中却 客官°小女子只卖身不卖艺/ 2022年06月10日 07:55/ 0 赞/ 441 阅读
相关 装Windows 8 过程中遇到的问题,及解决方案 10月26日,微软官方发布Windows 8正式版,不管处于什么心理,只要自己的机器能装Windows 7就装个Windows 8看看,毕竟是别人的劳动成果,抛开他做的好 浅浅的花香味﹌/ 2022年05月17日 04:20/ 0 赞/ 234 阅读
相关 论 Java 中的内存分配 \------------------------------------------------------------------------- Java内存分配主要包括 拼搏现实的明天。/ 2021年12月18日 17:17/ 0 赞/ 253 阅读
还没有评论,来说两句吧...