【发布时间】:2013-05-08 16:50:13
【问题描述】:
“空 if 语句”的意思是这样的(注意分号):
if (condition);
我在考虑为此申请时遇到了麻烦。使用 while 循环,您可以这样做:
while (callUntilReturnsFalse());
但没有这样的 if 语句应用。更重要的是,Java 编译器在遇到这样的语句时不会发出错误或警告。这可能会导致大而无声的问题,尤其是对于冗长而复杂的陈述:
if ((functionA() && functionB(getFoo()) ||
checkForComplexCondition(arg1, arg2, getBar(getFoo())));
{
doStuff();
}
我的问题是:为什么 Java 允许这样做?而且,更重要的是,我可以启用一个选项以在发生这种情况时发出警告吗?
(这个问题是关于 C# 的 asked before,它确实会发出警告,但我希望找到一种方法来用 Java 引起警告。)
【问题讨论】:
-
@FlorisVelleman 你是什么意思?也许我应该澄清一下,我的意思是完全没有正文的陈述
-
有一个选项可以让格式将独立的
;s 放在自己的行上,这样更容易捕捉。不过,我不确定获得警告的方法。 (我假设我们在谈论日食) -
请参阅this question 以获得对该主题的相当全面的处理。归根结底,它是一种有效的(如果无用的话)语言结构。与试图让编译器通知你相比,通过代码格式化找到它会更好。
-
这不是“无用”。它调用函数。
-
值得注意的是,如果下一个语句是
else语句,那么它只会在condition为 false 时运行。当然,使用!condition可以更轻松地编写整个结构。如果您还没有实现“condition为真”的情况,但仍想编译和运行代码,编译器不给出错误可能很有用。
标签: java language-design