使用 if(true) 和 if(false)
作者:未知 文章来源:www.jspcn.net
发布日期:2005年01月19日
使用 if(true) 和 if(false)
作者: BUILDER.COM 翻译:Java研究组织
Friday, January 10 2003 10:12 AM
开发人员调试代码期间,有时希望能够提前中断或者注释掉大块代码。这时,可以使用if(true)和if(false)语句。
通常,开发人员使用/**/来注释大块的代码。然而,在有些情况下,使用if(false)是一个更简便的方法。例如:
Iteratoritr = something.callMethod();
while(itr.hasNext()) {
doThings(itr);
}
something.close();
在这个代码片断中,while循环可以通过添加一行if(false) 很容易地注释掉。完全不用担心在while循环或者循环结尾是否有/**/注释语句。仅仅添加上if(false),例如:
Iteratoritr = something.callMethod();
if(false)
while(itr.hasNext()) {
doThings(itr);
}
something.close();
if(false)、if(true)组合也很有用。在下面的代码中,调用了所有的方法:
publicvoid someMethod(Object obj) {
doFirst(obj);
doSecond(obj);
doThird(obj);
doFourth(obj);
doFifth(obj);
....
}
在第二个方法调用后,注释掉剩余部分,开发人员可以使用/**/注释语句,或者蹩脚地放置一个if(false) {....}。但是如果开发人员希望放置一个return情况会怎样?例如:
publicvoid someMethod(Object obj) {
doFirst(obj);
doSecond(obj);
return;
doThird(obj);
doFourth(obj);
doFifth(obj);
;....
;}
不幸的是,这样不能通过编译:
/ javac:
code/ComplexTest.java:15: unreachable statement
Complex c = new Complex(3,4);
^
1 error
/ jikes:
Found 1 semantic error compiling "code/ComplexTest.java":
Complexc = new Complex(3,4);
.. .
System.out.println(Complex.conjugate(c));
------------------------------------------------>
*** Error: These statements are unreachable.
然而,可以使用if(true)使编译器认为这是合法的:
publicvoid someMethod(Object obj) {
doFirst(obj);
doSecond(obj);
if(true) return;
doThird(obj);
doFourth(obj);
doFifth(obj);
....
;}
if(true)语句也可以用于带有break语句的for循环或者while循环中。
总之,if(true)和if(false)语句在逻辑上是多余的,但是Java编译器并不分辨这些,所以它们可以用来帮助调整程序的行为。了解这些,对于调试期间调整代码的行为给开发人员更多的选择。
原作者: BUILDER
原出处: Java研究组织