#ifdef in Java

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).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert