@Documented @Retention(value=SOURCE) @Target(value={TYPE,METHOD,CONSTRUCTOR,PACKAGE}) public @interface AnnotatedFor
@AnnotatedFor({"nullness", "regex"})
indicates that the class has been annotated with
annotations such as @Nullable
and @Regex
. The argument to AnnotatedFor
is
not an annotation name, but a checker name.
You should only use this annotation in a partially-annotated library. There is no point to using it in a fully-annotated library nor in an application that does not export APIs for clients.
This annotation has no effect unless the -AuseConservativeDefaultsForUncheckedCode=source
command-line argument is supplied. Ordinarily,
the -AuseConservativeDefaultsForUncheckedCode=source
command-line argument causes
unannotated locations to be defaulted using conservative defaults, and it suppresses all
warnings. However, a class with a relevant @AnnotatedFor
annotation is always defaulted
normally (typically using the CLIMB-to-top rule), and typechecking warnings are issued.
public abstract String[] value
-processor
command-line argument: the fully-qualified class
name for the checker, or a shorthand for built-in checkers. Using the annotation with no
arguments, as in @AnnotatedFor({})
, has no effect.