猿问

java中具有多个OR的if条件的更好方法是什么?Java8 是首选

我如何以更好的方式做到这一点?我更喜欢 java8 语法。


这些布尔条件可能会增长。


boolean imageType = filetype.startsWith("image");


boolean videoType = filetype.startsWith("video");


boolean archiveType = filetype.contains("archive");


boolean jarType = filetype.contains("java-archive");


boolean audioType = filetype.startsWith("audio");


boolean zipType = filetype.contains("zip");


boolean xTarType = filetype.contains("x-tar");


boolean rarType = filetype.contains("rar");


if(!(imageType || videoType || archiveType || jarType || audioType || zipType || xTarType)) {

         //doSomething         

}


慕尼黑5688855
浏览 367回答 2
2回答

宝慕林4294392

这里有几种方法可以使这个更“可扩展”。使用正则表达式:Pattern p = Pattern.compile("^video|^audio|^image|zip|rar|java-archive|x-tar");if (!p.matcher(filetype).find()) {    // do stuff}使用数组或列表。例如:String[] prefixes = new String[]{"video", "audio", "images"};String[] contains = new String[]{"zip", "rar", "x-tar", "jar-archive"};boolean match = false;for (String p : prefixes) {    if (filetype.startsWith(p)) {        match = true;    }}...if (!match) {    // do stuff}显然,正则表达式方法更简洁,但数组方法可能更有效(如果这很重要!)。这取决于正则表达式引擎如何处理具有许多替代方案的正则表达式。这两种方法都会扩展;例如通过更新正则表达式,或通过向数组添加字符串。在这两种情况下,您都可以轻松地从属性文件或类似文件中加载相关条件……并避免更改代码。我不相信 Java 8 lambdas 和流很适合解决这个问题。
随时随地看视频慕课网APP

相关分类

Java
我要回答