WildcardType (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.lang.reflect, interface: WildcardType
Keywords: java.lang.reflect.WildcardType interface

# Interface WildcardType

All Superinterfaces:
  `Type`

public interface WildcardType extends Type
WildcardType represents a wildcard type expression, such as `?`, `? extends Number`, or `? super Integer`.

See Java Language Specification:
  4.5.1 Type Arguments of Parameterized Types
Since:
  1.5

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Type[]`
  `getLowerBounds()`
  Returns an array of `Type` objects representing the lower bound(s) of this type variable.
  `Type[]`
  `getUpperBounds()`
  Returns an array of `Type` objects representing the upper bound(s) of this type variable.

  ### Methods declared in interface Type

  `getTypeName`
  Modifier and Type
  Method
  Description
  `default String`
  `getTypeName()`
  Returns a string describing this type, including information about any type parameters.

- ## Method Details

  - ### getUpperBounds

    Type[] getUpperBounds()
    Returns an array of `Type` objects representing the upper bound(s) of this type variable. If no upper bound is explicitly declared, the upper bound is `Object`.

    For each upper bound B :

    - if B is a parameterized type or a type variable, it is created, (see `ParameterizedType` for the details of the creation process for parameterized types).
    - Otherwise, B is resolved.
    API Note:
      While to date a wildcard may have at most one upper bound, callers of this method should be written to accommodate multiple bounds.
    Returns:
      an array of Types representing the upper bound(s) of this type variable
    Throws:
      `TypeNotPresentException` - if any of the bounds refers to a non-existent type declaration
      `MalformedParameterizedTypeException` - if any of the bounds refer to a parameterized type that cannot be instantiated for any reason

  - ### getLowerBounds

    Type[] getLowerBounds()
    Returns an array of `Type` objects representing the lower bound(s) of this type variable. If no lower bound is explicitly declared, the lower bound is the type of `null`. In this case, a zero length array is returned.

    For each lower bound B :

    - if B is a parameterized type or a type variable, it is created, (see `ParameterizedType` for the details of the creation process for parameterized types).
    - Otherwise, B is resolved.
    API Note:
      While to date a wildcard may have at most one lower bound, callers of this method should be written to accommodate multiple bounds.
    Returns:
      an array of Types representing the lower bound(s) of this type variable
    Throws:
      `TypeNotPresentException` - if any of the bounds refers to a non-existent type declaration
      `MalformedParameterizedTypeException` - if any of the bounds refer to a parameterized type that cannot be instantiated for any reason