Using Class.isAnnotationPresent()
to test for an annotation
whose retention policy is set to SOURCE
or CLASS
(the default) will always have a negative result. This mistake is easy to overlook.
Example:
{ getClass().isAnnotationPresent(SourceAnnotation.class); //always false } @Retention(RetentionPolicy.SOURCE) @interface SourceAnnotation {}