Stay organized with collections
Save and categorize content based on your preferences.
TypeVariable
interface TypeVariable<D : GenericDeclaration!> : Type
TypeVariable is the common superinterface for type variables of kinds. A type variable is created the first time it is needed by a reflective method, as specified in this package. If a type variable t is referenced by a type (i.e, class, interface or annotation type) T, and T is declared by the nth enclosing class of T (see JLS 8.1.2), then the creation of t requires the resolution (see JVMS 5) of the ith enclosing class of T, for i = 0 to n, inclusive. Creating a type variable must not cause the creation of its bounds. Repeated creation of a type variable has no effect.
Multiple objects may be instantiated at run-time to represent a given type variable. Even though a type variable is created only once, this does not imply any requirement to cache instances representing the type variable. However, all instances representing a type variable must be equal() to each other. As a consequence, users of type variables must not rely on the identity of instances of classes implementing this interface.
Summary
Public methods |
abstract Array<Type!> |
Returns an array of Type objects representing the upper bound(s) of this type variable.
|
abstract D |
Returns the GenericDeclaration object representing the generic declaration declared this type variable.
|
abstract String |
Returns the name of this type variable, as it occurs in the source code.
|
Inherited functions |
From class Type
String |
getTypeName()
Returns a string describing this type, including information about any type parameters.
|
|
Public methods
getBounds
abstract fun getBounds(): Array<Type!>
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 for the details of the creation process for parameterized types).
- Otherwise, B is resolved.
Return |
Array<Type!> |
an array of Type s representing the upper bound(s) of this type variable |
Exceptions |
java.lang.TypeNotPresentException |
if any of the bounds refers to a non-existent type declaration |
java.lang.reflect.MalformedParameterizedTypeException |
if any of the bounds refer to a parameterized type that cannot be instantiated for any reason |
getGenericDeclaration
abstract fun getGenericDeclaration(): D
Returns the GenericDeclaration
object representing the generic declaration declared this type variable.
Return |
D |
the generic declaration declared for this type variable. |
getName
abstract fun getName(): String
Returns the name of this type variable, as it occurs in the source code.
Return |
String |
the name of this type variable, as it appears in the source code |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-10 UTC."],[],[],null,["# TypeVariable\n\nAdded in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)\n\nTypeVariable\n============\n\n```\ninterface TypeVariable\u003cD : GenericDeclaration!\u003e : Type\n```\n\n|-------------------------------------|\n| [java.lang.reflect.TypeVariable](#) |\n\nTypeVariable is the common superinterface for type variables of kinds. A type variable is created the first time it is needed by a reflective method, as specified in this package. If a type variable t is referenced by a type (i.e, class, interface or annotation type) T, and T is declared by the nth enclosing class of T (see JLS 8.1.2), then the creation of t requires the resolution (see JVMS 5) of the ith enclosing class of T, for i = 0 to n, inclusive. Creating a type variable must not cause the creation of its bounds. Repeated creation of a type variable has no effect.\n\nMultiple objects may be instantiated at run-time to represent a given type variable. Even though a type variable is created only once, this does not imply any requirement to cache instances representing the type variable. However, all instances representing a type variable must be equal() to each other. As a consequence, users of type variables must not rely on the identity of instances of classes implementing this interface.\n\nSummary\n-------\n\n| Public methods ||\n|----------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| abstract [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)\\\u003c[Type](/reference/kotlin/java/lang/reflect/Type)!\\\u003e | [getBounds](#getBounds())`()` Returns an array of `Type` objects representing the upper bound(s) of this type variable. |\n| abstract D | [getGenericDeclaration](#getGenericDeclaration())`()` Returns the `GenericDeclaration` object representing the generic declaration declared this type variable. |\n| abstract [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | [getName](#getName())`()` Returns the name of this type variable, as it occurs in the source code. |\n\n| Inherited functions ||\n|---|---|\n| From class [Type](/reference/kotlin/java/lang/reflect/Type) |----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | [getTypeName](/reference/kotlin/java/lang/reflect/Type#getTypeName())`()` Returns a string describing this type, including information about any type parameters. \u003cbr /\u003e | ||\n\nPublic methods\n--------------\n\n### getBounds\n\nAdded in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels) \n\n```\nabstract fun getBounds(): Array\u003cType!\u003e\n```\n\nReturns 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`.\n\nFor each upper bound B:\n\n- if B is a parameterized type or a type variable, it is created, (see for the details of the creation process for parameterized types).\n- Otherwise, B is resolved.\n\n| Return ||\n|-----------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------|\n| [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)\u003c[Type](/reference/kotlin/java/lang/reflect/Type)!\u003e | an array of `Type`s representing the upper bound(s) of this type variable |\n\n| Exceptions ||\n|---------------------------------------------------------|-----------------------------------------------------------------------------------------------|\n| `java.lang.TypeNotPresentException` | if any of the bounds refers to a non-existent type declaration |\n| `java.lang.reflect.MalformedParameterizedTypeException` | if any of the bounds refer to a parameterized type that cannot be instantiated for any reason |\n\n### getGenericDeclaration\n\nAdded in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels) \n\n```\nabstract fun getGenericDeclaration(): D\n```\n\nReturns the `GenericDeclaration` object representing the generic declaration declared this type variable.\n\n| Return ||\n|---|----------------------------------------------------------|\n| D | the generic declaration declared for this type variable. |\n\n### getName\n\nAdded in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels) \n\n```\nabstract fun getName(): String\n```\n\nReturns the name of this type variable, as it occurs in the source code.\n\n| Return ||\n|----------------------------------------------------------------------------------|------------------------------------------------------------------|\n| [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | the name of this type variable, as it appears in the source code |"]]