2 回答

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 和流很適合解決這個問題。
添加回答
舉報