Class TypeVariableReference
T extends Comparable<T>,
then the second occurence of T is represented as a type variable reference and not
as a type variable, because it occurs in its own definition. A type variable which is fully
defined before its occurence in a recursive type parameter is still represented as a type
variable. For example, the recursive type parameter in the following class includes
one type variable reference:
abstract class Builder<T, THIS extends Builder<T, THIS>> {
abstract T build();
final THIS self() {
return (THIS) this;
}
}
The identifier of the reference is THIS. The occurence of type variable T
in the recursive type parameter is not represented as a reference, because it does not
occur in its own definition. It is fully defined before.
The same holds for mutually recursive type parameters. If a type variable is fully defined before the type parameter in whose bound it occurs, it is represented as a type variable. It is represented as a type variable reference if it is defined after the type parameter in whose bound it occurs.
The type variable reference may be followed to obtain the original type variable.
Note that a type variable and a reference to that type variable may have different type annotations. Type annotations on the reference may be looked up from the reference, but when the reference is followed, the result is the original type variable with its own type annotations.
-
Nested Class Summary
-
Field Summary
Fields inherited from class org.jboss.jandex.Type
EMPTY_ARRAY -
Method Summary
Modifier and TypeMethodDescriptionCasts this type to aTypeVariableReferenceand returns it if the kind isType.Kind.TYPE_VARIABLE_REFERENCE.booleanCompares thisTypewith another type.follow()Returns the type variable referred to by this reference.inthashCode()Computes a hash code representing this type.Returns the identifier of this type variable reference as it appears in Java source code.booleanintkind()Returns the kind of Type this is.name()Returns the raw name of this type.Methods inherited from class org.jboss.jandex.Type
annotation, annotations, annotationsWithRepeatable, asArrayType, asClassType, asParameterizedType, asPrimitiveType, asTypeVariable, asUnresolvedTypeVariable, asVoidType, asWildcardType, create, createWithAnnotations, hasAnnotation, toString
-
Method Details
-
name
Description copied from class:TypeReturns the raw name of this type. Primitives and void are returned as the Java keyword (void, boolean, byte, short, int, long, float, double, char). Arrays are returned using the Java reflection array syntax (e.g.[[[Ljava.lang.String;) Classes are returned as a normalDotName.Generic values are returned as the underlying raw value. For example, a wildcard such as
? extends Numberhas a raw type ofNumber. -
identifier
Returns the identifier of this type variable reference as it appears in Java source code.For example, the following class has a recursive type parameter
Ewith one reference:abstract class MyEnum<E extends MyEnum<E>> { }The identifier of the reference isE.- Returns:
- the identifier of this type variable reference
-
follow
Returns the type variable referred to by this reference. -
kind
Description copied from class:TypeReturns the kind of Type this is. -
asTypeVariableReference
Description copied from class:TypeCasts this type to aTypeVariableReferenceand returns it if the kind isType.Kind.TYPE_VARIABLE_REFERENCE. Throws an exception otherwise.- Overrides:
asTypeVariableReferencein classType- Returns:
- a
TypeVariableReference
-
equals
Description copied from class:TypeCompares thisTypewith another type. A type is equal to another type if it is of the same kind, and all of their fields are equal. This includes annotations, which must be equal as well. -
hashCode
public int hashCode()Description copied from class:TypeComputes a hash code representing this type. -
internEquals
- Overrides:
internEqualsin classType
-
internHashCode
public int internHashCode()- Overrides:
internHashCodein classType
-