TypeVariable (Java SE 26 & JDK 26)
Description: declaration: module: java.compiler, package: javax.lang.model.type, interface: TypeVariable
Keywords: javax.lang.model.type.TypeVariable interface

# Interface TypeVariable

All Superinterfaces:
  `AnnotatedConstruct, ReferenceType, TypeMirror`

public interface TypeVariable extends ReferenceType
Represents a type variable. A type variable may be explicitly declared by a type parameter of a type, method, or constructor. A type variable may also be declared implicitly, as by the capture conversion of a wildcard type argument (see chapter 5 of The Java Language Specification).

See Java Language Specification:
  4.4 Type Variables
Since:
  1.6
See Also:
  - `TypeParameterElement`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Element`
  `asElement()`
  Returns the element corresponding to this type variable.
  `TypeMirror`
  `getLowerBound()`
  Returns the lower bound of this type variable.
  `TypeMirror`
  `getUpperBound()`
  Returns the upper bound of this type variable.

  ### Methods declared in interface TypeMirror

  `accept, equals, getAnnotation, getAnnotationMirrors, getAnnotationsByType, getKind, hashCode, toString`
  Modifier and Type
  Method
  Description
  `<R,P> R`
  `accept(TypeVisitor<R,P> v, P p)`
  Applies a visitor to this type.
  `boolean`
  `equals(Object obj)`
  Obeys the general contract of `Object.equals`.
  `<A extends Annotation>
  A`
  `getAnnotation(Class<A> annotationType)`
  Returns this construct's annotation of the specified type if such an annotation is present, else `null`.
  `List<? extends AnnotationMirror>`
  `getAnnotationMirrors()`
  Returns the annotations that are directly present on this construct.
  `<A extends Annotation>
  A[]`
  `getAnnotationsByType(Class<A> annotationType)`
  Returns annotations of the specified type that are associated with this construct.
  `TypeKind`
  `getKind()`
  Returns the `kind` of this type.
  `int`
  `hashCode()`
  Obeys the general contract of `Object.hashCode`.
  `String`
  `toString()`
  Returns an informative string representation of this type.

- ## Method Details

  - ### asElement

    Element asElement()
    Returns the element corresponding to this type variable.
    Returns:
      the element corresponding to this type variable

  - ### getUpperBound

    TypeMirror getUpperBound()
    Returns the upper bound of this type variable.

    If this type variable was declared with no explicit upper bounds, the result is `java.lang.Object`. If it was declared with multiple upper bounds, the result is an intersection type; individual bounds can be found by examining the result's bounds.

    Returns:
      the upper bound of this type variable
    See Java Language Specification:
      4.9 Intersection Types

  - ### getLowerBound

    TypeMirror getLowerBound()
    Returns the lower bound of this type variable. While a type parameter cannot include an explicit lower bound declaration, capture conversion can produce a type variable with a non-trivial lower bound. Type variables otherwise have a lower bound of `NullType`.
    Returns:
      the lower bound of this type variable
    See Java Language Specification:
      18.1.3 Bounds