亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中具有多個OR的if條件的更好方法是什么?Java8 是首選

java中具有多個OR的if條件的更好方法是什么?Java8 是首選

慕尼黑5688855 2021-09-03 22:02:46
我如何以更好的方式做到這一點?我更喜歡 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         }
查看完整描述

2 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

這里有幾種方法可以使這個更“可擴展”。


使用正則表達式:


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 和流很適合解決這個問題。


查看完整回答
反對 回復 2021-09-03
  • 2 回答
  • 0 關注
  • 396 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號