Java代码
if(x == null){
//some code
}
if(false){
//some code
}
何时执行if(false){code}
?
答案 0 :(得分:15)
永远不会执行。有时人们会在他们想要记住的旧代码或者一些尚未使用的新代码时执行此操作。像
if(false){fancyNewFunction();}
(就我而言,这是不好的形式,你不应该这样做,但这并不意味着它不会发生;)
答案 1 :(得分:8)
这也可能是模拟#ifdefine等宏预处理程序指令的常用方法。有些人用它来启用或禁用日志记录。
例如以下代码:
public class Sample{
private static final boolean LOG_ENABLED = true;
public static void main(String args[]){
if(LOG_ENABLED){
System.out.println("Hello World");
}
}
}
生成以下字节码:
public class Sample extends java.lang.Object{
public Sample();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String Hello World
5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
如果禁用该标志,则会得到以下字节码:
public class Sample extends java.lang.Object{
public Sample();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: return
}
如您所见,main方法中没有为第二种情况生成字节码。因此,如果禁用日志记录并重新编译代码,则可以改进基础字节码。
答案 2 :(得分:4)
我用
if (false)
{
doSomething();
}
有时会阻止执行doSomething()
。
这样做可能更好/更清楚:
final static private boolean ENABLE_WOLZOPPERY = false;
if (ENABLE_WOLZOPPERY)
{
wolzopp1();
}
blah_blah_blah();
if (ENABLE_WOLZOPPERY)
{
wolzopp2();
}
以便单个常量可以以命名方式启用/禁用多个块的行为。
答案 3 :(得分:1)
条件变为 true 时if条件执行的代码现在在if(false)
条件总是 false 所以if中的代码永远不会执行。
if(false){
// This code will be dead code and will never execute.
}
答案 4 :(得分:1)
code
中的if(false) { code }
将永远不会执行。
这是“注释掉”不应运行的代码(通常是调试代码或测试代码)的常用方法。在我看来,这并不是最好的风格,但它是一种非常常见的习语。
答案 5 :(得分:1)
这样的代码永远不会执行。去掉它。不要评论出来。只是混乱,会让以后需要维护它的人感到困惑。如果您需要取回它,请转到您的版本控制系统。
答案 6 :(得分:0)
code
永远不会执行,可能会从字节代码中删除。 然而该代码段将在构建时进行语法检查,因此有时候有充分的理由这样做。
答案 7 :(得分:0)
if中的代码永远不会执行,代码也可能只是注释掉代码
答案 8 :(得分:0)
这不是正常的代码,我从来没有使用过像这样的构造。也许是一种糟糕的方式来评论一些代码。
答案 9 :(得分:0)
如果您在调试器中单步执行代码,这将非常方便。
如果你有代码,你只想在被“监督”时执行,即你正在使用调试器并主动将代码中的下一个可执行步骤设置在if (false)
块内。通常,当代码运行时,它将被跳过。
但是没有真正的理由在生产代码中。
答案 10 :(得分:0)
if (false)
意味着永远不会执行的代码和平。如果您的某些代码未使用,则应将其删除。
使用代码的唯一原因是调试目的,但我认为这不是一个好主意。现在当IDE存在时,我们可以选择代码块并按一些快捷方式进行多行注释(对于Eclipse CTRL + /)。
您永远不应该提交此代码,因为这会导致许多问题:
答案 11 :(得分:0)
当我使用if(false)
语句时,我会使用goto
,去那里执行一些否则会做的代码,然后继续其余代码。
答案 12 :(得分:0)
将代码包装到if(false)
块中仅供作者参考。
当然,该代码永远不会执行,但是它包含可以以其他方式执行的指令。今天说的是我正在编写代码,并且对将来可能会有所帮助的其他想法有所了解,但仍需要有关如何处理的清晰思路。我将其放入该块中,而不仅仅是编写注释或注释代码。
但这不是一个好习惯。但没有害处。