Class WildcardType

java.lang.Object
org.jboss.jandex.Type
org.jboss.jandex.WildcardType

public class WildcardType extends Type
Represents a generic wildcard. A generic wildcard can have either an upper (extends) or a lower (super) bound. A wildcard declared without a bound ("?") has a default extends bound of "java.lang.Object".
Author:
Jason T. Greene
Since:
2.0
  • Method Details

    • create

      public static WildcardType create(Type bound, boolean isExtends)
      Create a new mock instance of WildcardType.
      Parameters:
      bound - the bound (lower or upper)
      isExtends - true if lower, false if upper (super)
      Returns:
      thew new mock instance
      Since:
      2.1
    • name

      public DotName name()
      Description copied from class: Type
      Returns the name of this type (or its erasure in case of generic types) as a DotName, using the Class.getName() format. Specifically:
      • for primitive types and the void pseudo-type, the corresponding Java keyword is returned (void, boolean, byte, short, int, long, float, double, char);
      • for class types, the binary name of the class is returned;
      • for array types, a string is returned that consists of one or more [ characters corresponding to the number of dimensions of the array type, followed by the element type as a single-character code for primitive types or L<binary class name>; for class types (for example, [I for int[] or [[Ljava.lang.String; for String[][]);
      • for parameterized types, the binary name of the generic class is returned (for example, java.util.List for List<String>);
      • for type variables, the name of the first bound of the type variable is returned, or java.lang.Object for type variables that have no bound;
      • for wildcard types, the name of the upper bound is returned, or java.lang.Object if the wildcard type does not have an upper bound (for example, java.lang.Number for ? extends Number).
      Overrides:
      name in class Type
      Returns:
      the name of this type (or its erasure in case of generic types)
    • extendsBound

      public Type extendsBound()
      Returns the upper bound of this wildcard (e.g. SomeType for ? extends SomeType).

      Returns java.lang.Object if this wildcard declares a lower bound (? super SomeType).

      Returns:
      the upper bound, or Object if this wildcard has a lower bound
    • superBound

      public Type superBound()
      Returns the lower bound of this wildcard (e.g. SomeType for ? super SomeType).

      Returns null if this wildcard declares an upper bound (? extends SomeType).

      Returns:
      the lower bound, or null if this wildcard has an uper bound
    • kind

      public Type.Kind kind()
      Description copied from class: Type
      Returns the kind of Type this is.
      Specified by:
      kind in class Type
      Returns:
      the kind
    • asWildcardType

      public WildcardType asWildcardType()
      Description copied from class: Type
      Casts this type to a WildcardType and returns it if the kind is Type.Kind.WILDCARD_TYPE. Throws an exception otherwise.
      Overrides:
      asWildcardType in class Type
      Returns:
      a WildcardType
    • equals

      public boolean equals(Object o)
      Description copied from class: Type
      Compares this Type with another type. A type is equal to another type if it is of the same kind, and all of their fields are equal. This includes annotations, which must be equal as well.
      Overrides:
      equals in class Type
      Parameters:
      o - the type to compare to
      Returns:
      true if equal
      See Also:
    • hashCode

      public int hashCode()
      Description copied from class: Type
      Computes a hash code representing this type.
      Overrides:
      hashCode in class Type
      Returns:
      the hash code
    • internEquals

      public boolean internEquals(Object o)
      Overrides:
      internEquals in class Type
    • internHashCode

      public int internHashCode()
      Overrides:
      internHashCode in class Type