# 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