Jeder, der C oder C++ kennt, kennt auch die Precompiler-Befehle. Mit #ifdef kann ein Entwickler den Compiler dazu veranlassen, bestimmte Codeabschnitte gar nicht mit zu kompilieren. Zum Beispiel, um Debug-Informationen aus dem endgültigen Code herauszufiltern bzw. diese nur bei Bedarf zu aktivieren.
In Java gibt es keine Precompiler. Man kann aber mit einem einfachen Mittel die Funktionalität von #ifdef nachbauen. Durch diesen Nachbau wird der Java-Compiler dazu gezwungen, bestimmte Codeabschnitte nicht mit in den Bytecode zu übernehmen.
public class AClass { public static final boolean COMP_CONDITION = true; public static void main (String args[]) { // If COMP_CONDITION is false, the compiler will ignore the entire if-statement. if (COMP_CONDITION) { System.out.println ("Running on true condition"); } } } |
Durch die Deklarierung als statische finale Variable, weiß der Compiler, dass sich diese Variable auf keinen Fall mehr ändern kann, daher schmeißt er die if-Bedingung automatisch weg (falls false) und kompiliert sie nicht mit. Ansonsten wird die Bedingung ganz normal übernommen.
Auf diesem Wege kann man ein #ifdef aus C in Java nachbauen. Eine mögliche Alternative dazu ist evtl. auch AOP (JBoss AOP, AspectJ).