今天,在搜索错误半小时之后,我发现可以在if语句后加上分号而不是代码,如下所示:
if(a == b); // Do stuff
从根本上讲,这意味着无论是否a相等b,都将完成工作,并且该if语句毫无意义。Java为什么不给我一个错误?有什么情况会有用吗?
a
b
if
Why does it happen?
Java语言规范说:
空话
空语句不执行任何操作。
EmptyStatement: ;
空语句的执行总是正常完成
从本质上讲,这意味着你要在a == b时执行空语句
if(a == b);
What should you do:
此问题有两种主要解决方案:
你可以通过使用代码格式化和周围里面的东西避免空语句的问题if有{和}。这样,你的空语句将更具可读性。
if(a == b){ ; }
你还可以检查用于静态代码分析的工具,例如:
他们可以立即突出显示诸如此类的问题。
我建议结合两种解决方案。