All Downloads are FREE. Search and download functionalities are using the official Maven repository.

checkers.quals.TypeQualifiers Maven / Gradle / Ivy

Go to download

Annotations ("type qualifiers") from the checker framework, backported so they can be used in pre-JDK8 applications

There is a newer version: 1.7.5
Show newest version
package checkers.quals;

import java.lang.annotation.*;


/**
 * An annotation that lists the type qualifiers supported by the annotated
 * {@code Checker}.
 *
 * 

* Example: * *

 * @TypeQualifiers( { Nullable.class, NonNull.class } )
 * public class NullnessChecker extends BaseTypeChecker { ... }
 * 
* * The checker reflectively queries this annotation, and subsequently the * meta-annotations on the annotations in the list, to form the result of * {@link BaseTypeChecker#getSupportedTypeQualifiers()} construct the type * qualifier hierarchy. The framework also uses this annotation to determine * which annotations may be added to an {@link AnnotatedTypeMirror} (an * annotation may be added if and only if it is a {@link TypeQualifier} and it * appears in in the list of supported annotations from {@link TypeQualifiers}). * *

* * This annotation differs from {@link SupportedAnnotationTypes} in that it * simply lists the annotations that a processor (checker) recognizes -- any * annotations not in the list should be ignored, but files lacking these * annotations should still be processed. {@link SupportedAnnotationTypes}, on * the other hand, instructs the compiler to skip processing of any file that * does not contain any supported annotations. * * Another difference is that {@link SupportedAnnotationTypes}'s argument is an * array of strings, whereas {@link TypeQualifiers}'s argument is an array of * classes. The former supports the use of "*" for specifying multiple * annotations (which is less important for {@link TypeQualifiers} than for * {@link SupportedAnnotationTypes}), while the latter permits type-checking, * refactoring by IDEs, etc. * * @see BaseTypeChecker#getSupportedTypeQualifiers() */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target( { ElementType.TYPE } ) public @interface TypeQualifiers { /** The type qualifier annotations supported by the annotated {@code Checker}. * The checker may also support other, non-type-qualifier, annotations. */ Class[] value(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy