Search code examples
javaloopsif-statementunreachable-code

Why Java identifies unreachable code only in case of while loop?


If I have code like

public static void main(String args[]){
    int x = 0;
    while (false) { x=3; }  //will not compile  
}

compiler will complaint that x=3 is unreachable code but if I have code like

public static void main(String args[]){
    int x = 0;
    if (false) { x=3; }
    for( int i = 0; i< 0; i++) x = 3;   
}

then it compiles correctly though the code inside if statement and for loop is unreachable. Why is this redundancy not detected by java workflow logic ? Any usecase?


Solution

  • As described in Java Language Specification, this feature is reserved for "conditional compilation".

    An example, described in the JLS, is that you may have a constant

    static final boolean DEBUG = false;
    

    and the code that uses this constant

    if (DEBUG) { x=3; }
    

    The idea is to provide a possibility to change DEBUG from true to false easily without making any other changes to the code, which would not be possible if the above code gave a compilation error.