【发布时间】:2016-03-30 08:53:17
【问题描述】:
这是我的代码:
public enum Modification {
NONE, SET, REMOVE;
}
boolean foo(){
for (S s : sList) {
final Modification modification = s.getModification();
switch (modification) {
case SET:
case REMOVE:
return true;
/*
case NONE:
break;
*/
}
}
return false;
}
当代码如上所示时,IntelliJ 会说:
'for' 语句不会少循环... () 报告任何 for 实例, while 和 do 语句,其主体最多保证执行 一次。通常,这表明存在错误。
只有我做出以下更改,IntelliJ 才会高兴:
for (S s : sList) {
final Modification modification = s.getModification();
switch (modification) {
case SET:
case REMOVE:
return true;
case NONE:
break;
}
}
如果 case NONE: 未包含在 switch 语句中,为什么我的 for 循环不循环?
【问题讨论】:
-
还有更多 IDE '需要'默认选项。我的猜测:IntelliJ 将您实现的所有选项视为唯一可能的选项,并且它们都在第一次迭代时执行返回。
-
我认为这是您仅有的三种情况,对吗?所以基本上它是说您将要击中前两种中的一种并立即返回 true,因此不循环,只需添加
default case跨度> -
@AlexHall 和
case NONE会重复多次,请再次检查。 -
@KorayTugay @Kiltos 它只会在
return语句未执行时循环,而没有case NONE时return不会执行的唯一方法是前两种情况不执行与开关匹配,这可能发生。 -
是的,它确实循环了,Intellij 错了。
标签: java for-loop intellij-idea