We have already discussed annotations in great detail. You may recall that we defined our annotation interfaces using the following annotation:
This tells the Java compiler to keep the annotation and put it into the JVM code so that the code can access it during runtime using reflection. The default value is RetentionPolicy.CLASS, which means that the annotation gets into the bytecode, but the JVM does not make it available for the runtime system. If we use RetentionPolicy.SOURCE, the annotation does not even get into the class file. In this case, there is only one possibility to do anything with the annotation—compile time.
How can we write code that runs during compile-time? Java ...