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 { ... }
 

Defaults on a package also apply to subpackages, unless the applyToSubpackages field is set to false.

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
    boolean
    When used on a package, whether the defaults should also apply to subpackages.
    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}
    • applyToSubpackages

      boolean applyToSubpackages
      When used on a package, whether the defaults should also apply to subpackages.
      Returns:
      whether the default should be inherited by subpackages
      Default:
      true