Assertions in general
Logging messages
To implement conditional compilation,
static final boolean
value as a non-private member
of some classif
block
which evaluates the boolean
boolean
to false
to cause the compiler
to ignore the if
block; otherwise, keep its value as true
assert
and
the Logging API in JDK 1.4, the utility of conditional compilation is probably
reduced.
Example
public final class Debug { //set to false to allow compiler to identify and eliminate //unreachable code public static final boolean ON = true; }
Debug
to implement conditional compilation
:
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; /** * Uses conditional compilation to optionally print debugging statements. */ public final class GenericServlet extends HttpServlet { public void init(ServletConfig config) throws ServletException { super.init(config); //print out a message, but only if Debug.ON evaluates to true //if Debug.ON evaluates to false, this entire block of code will be //passed over by the compiler, and will not be present in output .class file if (Debug.ON) { System.out.println("**** INIT OF My Controller *****"); } } public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { if (Debug.ON) { System.out.println("Processing doGet"); } doHttpRequest(request, response); } public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { if (Debug.ON) { System.out.println("Processing doPost"); } doHttpRequest(request, response); } // PRIVATE // private void doHttpRequest( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { //empty } }