Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

#if in java, like in c preprocessors [duplicate]

Possible Duplicate:
How to mark java code such that it’s not compiled

In c, we can prevent compilation of block code like this :

#if 0

    //code here

#endif

So even if code block is error prone the code compiles, I want the same thing in Java, So that I can skip that part of code which won't compile because some library is missing.

Can anyone help me ?

like image 497
Charan Pai Avatar asked Jan 08 '13 05:01

Charan Pai


2 Answers

There is no preprocessor in Java. Depending on your build system, you may be able to use a third-party preprocessor (you can find lots of them by searching for "java preprocessor"). Some examples are

  • pre-processor-java
  • java-comment-preprocessor
  • javapp
  • prebop

Depending on the scope you want to comment out, you can use block comments and sometimes something like

if (false) {
    . . .
}

If all else fails, just comment out every line using //. Most IDEs have a way to do this (and undo it) efficiently.

P.S. If you can use block comments (not always possible, since block comments can't be nested in Java), there's a nice trick that makes it easier to toggle off and on the comment-out portion. Start your block comment on a line by itself, but end it with another isolated line that starts with a line comment, like this:

/*
   <block of code ignored as comment>
//*/

Then if you want to turn the commented-out section back on, just add a second / at the start of the block:

//*
   <block of code now active>
//*/

To toggle the code off again, just remove the first /. (Without the // at the start of the last line, the dangling */ would be a syntax error whenever you activated the code by adding a / to the opening line of the block.)

like image 85
Ted Hopp Avatar answered Oct 21 '22 07:10

Ted Hopp


I'm under the assumption that the compiler will strip the code inside blocks enforced with constant/final flags? This is how you can leave code in your project that isn't shipped in the final apk.

public final static boolean DEBUG = false;

if(DEBUG) {
    //add messy error prone code here
    //compiler will strip this out as unreachable when false
}

Read here:

http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.21

like image 45
Chuck D Avatar answered Oct 21 '22 07:10

Chuck D