これは私が持っているコードです:IntelliJは "for文がループしない"と不平を言っていますか?
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のインスタンス whileおよびdoは、本体が最大でも の実行を保証されています。通常、これはバグの兆候です。
私は次のように変更を加えた場合にのみ、IntelliJのが幸せになります: switch文に含まれていません:ケースNONEがあれば
for (S s : sList) {
final Modification modification = s.getModification();
switch (modification) {
case SET:
case REMOVE:
return true;
case NONE:
break;
}
}
はなぜループのためにループされていませんか?
を固定しています。私の推測:IntelliJは、実装したすべてのオプションを唯一の可能性のあるものとみなし、すべてが最初の反復でリターンを実行します。 – Stultuske
私はこれらがあなたの唯一の3つのケースだと仮定していますか?したがって、基本的には、最初の2つのうちの1つに当たってすぐに真を返すので、ループしないで、単にデフォルトケースを追加してください。 – AngryDuck
@AlexHall with 'case NONE'何回も繰り返され、再度チェックされます。 –