Class TypeQualifierValue<A extends Annotation>

java.lang.Object
edu.umd.cs.findbugs.ba.jsr305.TypeQualifierValue<A>

public class TypeQualifierValue<A extends Annotation> extends Object
A TypeQualifierValue is a pair specifying a type qualifier annotation and a value. Each TypeQualifierValue is effectively a different type qualifier. For example, if Foo is a type qualifier annotation having an int value, then Foo(0), Foo(1), etc. are all different type qualifiers which must be checked separately.
Author:
William Pugh
  • Field Details

    • DEBUG

      public static final boolean DEBUG
    • DEBUG_CLASSLOADING

      public static final boolean DEBUG_CLASSLOADING
    • typeQualifier

      public final ClassDescriptor typeQualifier
    • typeQualifierClass

      public final Class<A extends Annotation> typeQualifierClass
    • proxy

      public final A extends Annotation proxy
    • value

      @CheckForNull public final Object value
  • Method Details

    • clearInstance

      public static void clearInstance()
    • canValidate

      public boolean canValidate(@CheckForNull Object constantValue)
    • validate

      public javax.annotation.meta.When validate(@CheckForNull Object constantValue)
    • getValue

      @Nonnull public static TypeQualifierValue<?> getValue(ClassDescriptor desc, @CheckForNull Object value)
      Given a ClassDescriptor/value pair, return the interned TypeQualifierValue representing that pair.
      Parameters:
      desc - a ClassDescriptor denoting a type qualifier annotation
      value - a value
      Returns:
      an interned TypeQualifierValue object
    • getValue

      @Nonnull public static <A extends Annotation> TypeQualifierValue<A> getValue(Class<A> clazz, @CheckForNull Object value)
    • getAllKnownTypeQualifiers

      public static Collection<TypeQualifierValue<?>> getAllKnownTypeQualifiers()
      Get Collection of all known TypeQualifierValues.
      Returns:
      Collection of all known TypeQualifierValues
    • getComplementaryExclusiveTypeQualifierValue

      public static Collection<TypeQualifierValue<?>> getComplementaryExclusiveTypeQualifierValue(TypeQualifierValue<?> tqv)
      Get the "complementary" TypeQualifierValues for given exclusive type qualifier.
      Parameters:
      tqv - a type qualifier (which must be exclusive)
      Returns:
      Collection of complementary exclusive type qualifiers
    • hasMultipleVariants

      public static boolean hasMultipleVariants(TypeQualifierValue<?> tqv)
      Determine whether or not given TypeQualifierValue has multiple variants. I.e., if Color is a type qualifier having values RED, GREEN, and BLUE, then there are 3 variants, Color(RED), Color(GREEN), and COLOR(BLUE).
      Parameters:
      tqv - a TypeQualifierValue
      Returns:
      true if there are multiple variants of this type qualifier, false otherwise
    • getTypeQualifierClassDescriptor

      public ClassDescriptor getTypeQualifierClassDescriptor()
      Get the ClassDescriptor which specifies the type qualifier annotation.
      Returns:
      ClassDescriptor which specifies the type qualifier annotation
    • isStrictQualifier

      public boolean isStrictQualifier()
      Return whether or not this TypeQualifierValue denotes a strict qualifier.
      Returns:
      true if type qualifier is strict, false otherwise
    • isExclusiveQualifier

      public boolean isExclusiveQualifier()
      Return whether or not this TypeQualifierValue denotes an exclusive qualifier.
      Returns:
      true if type qualifier is exclusive, false otherwise
    • isExhaustiveQualifier

      public boolean isExhaustiveQualifier()
      Return whether or not this TypeQualifierValue denotes an exhaustive qualifier.
      Returns:
      true if type qualifier is exhaustive, false otherwise
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object