Annotation Interface DefaultQualifier


Applied to a declaration of a package, type, method, variable, etc., specifies that the given annotation should be the default. The default is applied to type uses within the declaration for which no other annotation is explicitly written. (The default is not applied to the "parametric locations": class declarations, type parameter declarations, and type parameter uses.) If multiple DefaultQualifier annotations are in scope, the innermost one takes precedence. DefaultQualifier takes precedence over DefaultQualifierInHierarchy.

You may write multiple @DefaultQualifier annotations (for unrelated type systems, or with different locations fields) at the same location. For example:

   @DefaultQualifier(NonNull.class)
   @DefaultQualifier(value = NonNull.class, locations = TypeUseLocation.IMPLICIT_UPPER_BOUND)
   @DefaultQualifier(Tainted.class)
   class MyClass { ... }
 

This annotation currently has no effect in stub files.

See Also:
See the Checker Framework Manual:
Default qualifier for unannotated types
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static @interface 
    A wrapper annotation that makes the DefaultQualifier annotation repeatable.
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Class<? extends Annotation>
    The Class for the default annotation.
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    Returns the locations to which the annotation should be applied.
  • Element Details

    • value

      Class<? extends Annotation> value
      The Class for the default annotation.

      To prevent affecting other type systems, always specify an annotation in your own type hierarchy. (For example, do not set Unqualified as the default.)

    • locations

      TypeUseLocation[] locations
      Returns the locations to which the annotation should be applied.
      Returns:
      the locations to which the annotation should be applied
      Default:
      {ALL}