【发布时间】:2019-12-16 11:36:54
【问题描述】:
我正在尝试编写一种方法来过滤列表中的内容,并在 Map 中确定标准。我在地图上写了一个循环,每次检查是否应该将列表元素添加到新列表中。 我的问题是:在 switch 语句中,第一个和最后一个案例被视为重复。这是我的 IDE 的问题吗? 非常感谢您的帮助!
@Override
public boolean match(Person p, Map<String, Object> criteria,SearchMode mode) {
for(Entry<String,Object> es:criteria.entrySet()) {
Object value=es.getValue();
switch(es.getKey()) {
case ID:
if(mode==SearchMode.AND && !Integer.valueOf(p.getId()).equals((Integer)value)) {
return false;
}else if (mode==SearchMode.OR && Integer.valueOf(p.getId()).equals((Integer)value)) {
return true;
}
break;
case USER_NAME:
if(mode==SearchMode.AND && !p.getUserName().equals(value)) {
return false;
} else if(mode==SearchMode.OR && p.getUserName().equals(value)) {
return true;
}
break;
case EMAIL:
if(mode==SearchMode.AND && !p.getEmail().equals(value)) {
return false;
}else if(mode==SearchMode.OR && p.getEmail().equals(value)) {
return true;
}
break;
case PASSWORD:
if(mode==SearchMode.AND && !p.getPassword().equals(value)) {
return false;
} else if(mode==SearchMode.OR && p.getPassword().equals(value)) {
return true;
}
break;
case FIRST_NAME:
if(mode==SearchMode.AND && !p.getFirstName().equals(value)) {
return false;
} else if(mode==SearchMode.OR && p.getFirstName().equals(value)) {
return true;
}
break;
case LAST_NAME:
if(mode==SearchMode.AND && !p.getLastName().equals(value)) {
return false;
}else if(mode==SearchMode.OR && p.getLastName().equals(value)) {
return true;
}
break;
case STATUS:
if(mode==SearchMode.AND && !p.getStatus().equals((Person.Status.valueOf(value.toString())))){
return false;
}else if(mode==SearchMode.OR && !p.getStatus().equals((Person.Status.valueOf(value.toString())))){
return true;
}
break;
}
}
return true;
}
【问题讨论】:
-
您必须已定义常量 ID 和 STATUS。我认为这些常量的值是相同的
-
ID 和 STATUS 不一样。奇怪的是,红色下划线随着我减少案例数量而出现......
标签: java duplicates switch-statement case