Enum Class TypeUseLocation

java.lang.Object
java.lang.Enum<TypeUseLocation>
org.checkerframework.framework.qual.TypeUseLocation
All Implemented Interfaces:
Serializable, Comparable<TypeUseLocation>, Constable

public enum TypeUseLocation extends Enum<TypeUseLocation>
Specifies the locations to which a DefaultQualifier annotation applies.

The order of enums is important. Defaults are applied in this order. In particular, this means that OTHERWISE and ALL should be last.

For an annotation on a variable which has element kind ENUM_CONSTANT, the annotation's type-use location is either TypeUseLocation.FIELD or TypeUseLocation.CONSTRUCTOR_RESULT.

Note: The use locations listed here are not complete, for more details see EISOP Issue #340

See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class java.lang.Enum

    Enum.EnumDesc<E extends Enum<E>>
  • Enum Constant Summary

    Enum Constants
    Enum Constant
    Description
    Apply default annotations to all type uses other than uses of type parameters.
    Apply default annotations to all unannotated raw types of constructor result types.
    Apply default annotations to all unannotated raw types of exception parameters.
    Apply default annotations to unannotated, but explicit lower bounds of wildcards: <? super C>.
    Apply default annotations to unannotated, but explicit type parameter upper bounds: <T extends C>.
    Apply default annotations to unannotated, but explicit type parameter and wildcard upper bounds: <T extends C> and <? extends C>.
    Apply default annotations to unannotated, but explicit wildcard upper bounds: <? extends C>.
    Apply default annotations to all unannotated raw types of fields.
    Apply default annotations to unannotated, but implicit lower bounds for type parameters and wildcards: <T> and <?>, possibly with explicit upper bounds.
    Apply default annotations to unannotated upper bounds for type parameters without explicit upper bounds: <T>.
    Apply default annotations to unannotated upper bounds for type parameters and wildcards without explicit upper bounds: <T>, <?>, and <? super C>.
    Apply default annotations to unannotated upper bounds for wildcards with or without a super bound: <?> or <? super C>.
    Apply default annotations to unannotated upper bounds for wildcards without a super bound: <?>.
    Apply default annotations to unannotated upper bounds for wildcards with a super bound: <? super C>.
    Apply default annotations to all unannotated raw types of local variables, casts, and instanceof.
    Apply default annotations to unannotated lower bounds for type parameters and wildcards, both explicit ones in super clauses, and implicit lower bounds when no explicit extends or super clause is present.
    Apply if nothing more concrete is provided.
    Apply default annotations to all unannotated raw types of formal parameter types, excluding the receiver.
    Apply default annotations to all unannotated raw types of receiver types.
    Apply default annotations to all unannotated raw types of resource variables.
    Apply default annotations to all unannotated raw types of return types.
    Apply default annotations to unannotated type variable uses: T.
    Apply default annotations to unannotated upper bounds for type parameters and wildcards: both explicit ones in extends clauses, and implicit upper bounds when no explicit extends or super clause is present.
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns the enum constant of this class with the specified name.
    Returns an array containing the constants of this enum class, in the order they are declared.

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait
  • Enum Constant Details

    • FIELD

      public static final TypeUseLocation FIELD
      Apply default annotations to all unannotated raw types of fields.
    • LOCAL_VARIABLE

      public static final TypeUseLocation LOCAL_VARIABLE
      Apply default annotations to all unannotated raw types of local variables, casts, and instanceof.
    • RESOURCE_VARIABLE

      public static final TypeUseLocation RESOURCE_VARIABLE
      Apply default annotations to all unannotated raw types of resource variables.
    • EXCEPTION_PARAMETER

      public static final TypeUseLocation EXCEPTION_PARAMETER
      Apply default annotations to all unannotated raw types of exception parameters.
    • RECEIVER

      public static final TypeUseLocation RECEIVER
      Apply default annotations to all unannotated raw types of receiver types.
    • PARAMETER

      public static final TypeUseLocation PARAMETER
      Apply default annotations to all unannotated raw types of formal parameter types, excluding the receiver.
    • RETURN

      public static final TypeUseLocation RETURN
      Apply default annotations to all unannotated raw types of return types.
    • CONSTRUCTOR_RESULT

      public static final TypeUseLocation CONSTRUCTOR_RESULT
      Apply default annotations to all unannotated raw types of constructor result types.
    • LOWER_BOUND

      public static final TypeUseLocation LOWER_BOUND
      Apply default annotations to unannotated lower bounds for type parameters and wildcards, both explicit ones in super clauses, and implicit lower bounds when no explicit extends or super clause is present.
    • EXPLICIT_LOWER_BOUND

      public static final TypeUseLocation EXPLICIT_LOWER_BOUND
      Apply default annotations to unannotated, but explicit lower bounds of wildcards: <? super C>. Type parameters have no syntax for explicit lower bound types.
    • IMPLICIT_LOWER_BOUND

      public static final TypeUseLocation IMPLICIT_LOWER_BOUND
      Apply default annotations to unannotated, but implicit lower bounds for type parameters and wildcards: <T> and <?>, possibly with explicit upper bounds.
    • UPPER_BOUND

      public static final TypeUseLocation UPPER_BOUND
      Apply default annotations to unannotated upper bounds for type parameters and wildcards: both explicit ones in extends clauses, and implicit upper bounds when no explicit extends or super clause is present.

      Especially useful for parametrized classes that provide a lot of static methods with the same generic parameters as the class.

    • EXPLICIT_UPPER_BOUND

      public static final TypeUseLocation EXPLICIT_UPPER_BOUND
      Apply default annotations to unannotated, but explicit type parameter and wildcard upper bounds: <T extends C> and <? extends C>.
    • EXPLICIT_TYPE_PARAMETER_UPPER_BOUND

      public static final TypeUseLocation EXPLICIT_TYPE_PARAMETER_UPPER_BOUND
      Apply default annotations to unannotated, but explicit type parameter upper bounds: <T extends C>.
    • EXPLICIT_WILDCARD_UPPER_BOUND

      public static final TypeUseLocation EXPLICIT_WILDCARD_UPPER_BOUND
      Apply default annotations to unannotated, but explicit wildcard upper bounds: <? extends C>.
    • IMPLICIT_UPPER_BOUND

      public static final TypeUseLocation IMPLICIT_UPPER_BOUND
      Apply default annotations to unannotated upper bounds for type parameters and wildcards without explicit upper bounds: <T>, <?>, and <? super C>.
    • IMPLICIT_TYPE_PARAMETER_UPPER_BOUND

      public static final TypeUseLocation IMPLICIT_TYPE_PARAMETER_UPPER_BOUND
      Apply default annotations to unannotated upper bounds for type parameters without explicit upper bounds: <T>.
    • IMPLICIT_WILDCARD_UPPER_BOUND_NO_SUPER

      public static final TypeUseLocation IMPLICIT_WILDCARD_UPPER_BOUND_NO_SUPER
      Apply default annotations to unannotated upper bounds for wildcards without a super bound: <?>.
    • IMPLICIT_WILDCARD_UPPER_BOUND_SUPER

      public static final TypeUseLocation IMPLICIT_WILDCARD_UPPER_BOUND_SUPER
      Apply default annotations to unannotated upper bounds for wildcards with a super bound: <? super C>.
    • IMPLICIT_WILDCARD_UPPER_BOUND

      public static final TypeUseLocation IMPLICIT_WILDCARD_UPPER_BOUND
      Apply default annotations to unannotated upper bounds for wildcards with or without a super bound: <?> or <? super C>.
    • TYPE_VARIABLE_USE

      public static final TypeUseLocation TYPE_VARIABLE_USE
      Apply default annotations to unannotated type variable uses: T.

      To get parametric polymorphism: add a qualifier that is meta-annotated with ParametricTypeVariableUseQualifier to your type system and use it as default for TYPE_VARIABLE_USE, which is treated like no annotation on the type variable use.

    • OTHERWISE

      public static final TypeUseLocation OTHERWISE
      Apply if nothing more concrete is provided. TODO: clarify relation to ALL.
    • ALL

      public static final TypeUseLocation ALL
      Apply default annotations to all type uses other than uses of type parameters. Does not allow any of the other constants. Usually you want OTHERWISE.
  • Method Details

    • values

      public static TypeUseLocation[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static TypeUseLocation valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null