Stay organized with collections
Save and categorize content based on your preferences.
TypeVariable
public
interface
TypeVariable
implements
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
Type[]
|
getBounds()
Returns an array of Type objects representing the
upper bound(s) of this type variable.
|
abstract
D
|
getGenericDeclaration()
Returns the GenericDeclaration object representing the
generic declaration declared this type variable.
|
abstract
String
|
getName()
Returns the name of this type variable, as it occurs in the source code.
|
Public methods
getBounds
public abstract Type[] getBounds ()
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.
Returns |
Type[] |
an array of Type s representing the upper
bound(s) of this type variable |
getGenericDeclaration
public abstract D getGenericDeclaration ()
Returns the GenericDeclaration
object representing the
generic declaration declared this type variable.
Returns |
D |
the generic declaration declared for this type variable. |
getName
public abstract String getName ()
Returns the name of this type variable, as it occurs in the source code.
Returns |
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](/guide/topics/manifest/uses-sdk-element#ApiLevels) \nSummary: [Methods](#pubmethods) \\| [Inherited Methods](#inhmethods) \n\nTypeVariable\n============\n\n\n`\npublic\n\n\ninterface\nTypeVariable\n`\n\n\n`\n\n\nimplements\n\n`[Type](/reference/java/lang/reflect/Type)`\n\n\n`\n\n|-------------------------------------------------------------------------------------------------------------------------------------|\n| java.lang.reflect.TypeVariable\\\u003cD extends [java.lang.reflect.GenericDeclaration](/reference/java/lang/reflect/GenericDeclaration)\\\u003e |\n\n\u003cbr /\u003e\n\n*** ** * ** ***\n\nTypeVariable is the common superinterface for type variables of kinds.\nA type variable is created the first time it is needed by a reflective\nmethod, as specified in this package. If a type variable t is referenced\nby a type (i.e, class, interface or annotation type) T, and T is declared\nby the nth enclosing class of T (see JLS 8.1.2), then the creation of t\nrequires the resolution (see JVMS 5) of the ith enclosing class of T,\nfor i = 0 to n, inclusive. Creating a type variable must not cause the\ncreation of its bounds. Repeated creation of a type variable has no effect.\n\nMultiple objects may be instantiated at run-time to\nrepresent a given type variable. Even though a type variable is\ncreated only once, this does not imply any requirement to cache\ninstances representing the type variable. However, all instances\nrepresenting a type variable must be equal() to each other.\nAs a consequence, users of type variables must not rely on the identity\nof instances of classes implementing this interface.\n\nSummary\n-------\n\n| ### Public methods ||\n|---------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ` abstract `[Type[]](/reference/java/lang/reflect/Type) | ` `[getBounds](/reference/java/lang/reflect/TypeVariable#getBounds())`() ` Returns an array of `Type` objects representing the upper bound(s) of this type variable. |\n| ` abstract D` | ` `[getGenericDeclaration](/reference/java/lang/reflect/TypeVariable#getGenericDeclaration())`() ` Returns the `GenericDeclaration` object representing the generic declaration declared this type variable. |\n| ` abstract `[String](/reference/java/lang/String) | ` `[getName](/reference/java/lang/reflect/TypeVariable#getName())`() ` Returns the name of this type variable, as it occurs in the source code. |\n\n| ### Inherited methods |\n|-----------------------|---|\n| From interface ` `[java.lang.reflect.Type](/reference/java/lang/reflect/Type)` ` |--------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` default `[String](/reference/java/lang/String) | ` `[getTypeName](/reference/java/lang/reflect/Type#getTypeName())`() ` Returns a string describing this type, including information about any type parameters. | ||\n\nPublic methods\n--------------\n\n### getBounds\n\nAdded in [API level 1](/guide/topics/manifest/uses-sdk-element#ApiLevels) \n\n```\npublic abstract Type[] getBounds ()\n```\n\nReturns an array of `Type` objects representing the\nupper bound(s) of this type variable. If no upper bound is\nexplicitly 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 [ParameterizedType](/reference/java/lang/reflect/ParameterizedType) for the details of the creation process for parameterized types).\n- Otherwise, B is resolved.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ||\n|---------------------------------------------|----------------------------------------------------------------------------------|\n| [Type[]](/reference/java/lang/reflect/Type) | an array of `Type`s representing the upper bound(s) of this type variable \u003cbr /\u003e |\n\n| Throws ||\n|---------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|\n| [TypeNotPresentException](/reference/java/lang/TypeNotPresentException) | if any of the bounds refers to a non-existent type declaration |\n| [MalformedParameterizedTypeException](/reference/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](/guide/topics/manifest/uses-sdk-element#ApiLevels) \n\n```\npublic abstract D getGenericDeclaration ()\n```\n\nReturns the `GenericDeclaration` object representing the\ngeneric declaration declared this type variable.\n\n\u003cbr /\u003e\n\n| Returns ||\n|-----|-----------------------------------------------------------------|\n| `D` | the generic declaration declared for this type variable. \u003cbr /\u003e |\n\n### getName\n\nAdded in [API level 1](/guide/topics/manifest/uses-sdk-element#ApiLevels) \n\n```\npublic abstract String getName ()\n```\n\nReturns the name of this type variable, as it occurs in the source code.\n\n\u003cbr /\u003e\n\n| Returns ||\n|---------------------------------------|-------------------------------------------------------------------------|\n| [String](/reference/java/lang/String) | the name of this type variable, as it appears in the source code \u003cbr /\u003e |"]]