在java中使用开关块而不是多个if语句的字符串
public class A {
public void search(boolean[] searchList) {
// searchList array is used to identify what options to search for in a given order
// e.g. boolean [] searchList = new boolean [] {false, false, true, false};
boolean searchL = false;
boolean searchM = false;
boolean searchK = false;
boolean searchA = false;
if(searchList[0] == true) searchL = true;
if(searchList[1] == true) searchM = true;
if(searchList[2] == true) searchK = true;
if(searchList[3] == true) searchA = true;
if(searchL == true) // write a query to search for all Ls
if(searchM == true) // write a query to search for all Ms
...........
}
有没有办法简化这段代码
@All:很抱歉之前发布了一个错误的问题。我很困惑
谢谢, 索尼
# 1 楼答案
根据你的评论,下面是我更新的方法示例——确保顶部的评论已更新
最新想法:
# 2 楼答案
您应该将状态转换为枚举。例如,你的搜索布尔值似乎是排他性的,所以我会这样做:
如果你的州不是排他性的,你应该试着先建立一个超级排他性州
# 3 楼答案
像这样:
}
# 4 楼答案
为什么不使用OOP?比如:
# 5 楼答案
我是Enum的超级粉丝:
另外请注意:您的场景允许一次有多个搜索布尔值为真,我假设这不是您的目标,但如果是,我们可以稍微调整一下