Package org.jboss.jandex
Class WildcardType
- java.lang.Object
-
- org.jboss.jandex.Type
-
- org.jboss.jandex.WildcardType
-
- All Implemented Interfaces:
Descriptor
public class WildcardType extends Type
Represents a generic wildcard. A generic wildcard can have either an upper (extends) or a lower (super) bound. A wildcard declared without a bound ("?") has a default extends bound of "java.lang.Object".- Since:
- 2.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
WildcardType.Builder
Convenient builder forWildcardType
.
-
Field Summary
Fields Modifier and Type Field Description private Type
bound
private int
hash
private boolean
isExtends
static WildcardType
UNBOUNDED
A wildcard without a bound, an equivalent of?
.-
Fields inherited from class org.jboss.jandex.Type
EMPTY_ARRAY
-
Fields inherited from interface org.jboss.jandex.Descriptor
NO_SUBSTITUTION
-
-
Constructor Summary
Constructors Constructor Description WildcardType(Type bound, boolean isExtends)
WildcardType(Type bound, boolean isExtends, AnnotationInstance[] annotations)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description WildcardType
asWildcardType()
Casts this type to aWildcardType
and returns it if the kind isType.Kind.WILDCARD_TYPE
.(package private) Type
bound()
static WildcardType.Builder
builder()
Create a builder of a wildcard type.(package private) Type
copyType(AnnotationInstance[] newAnnotations)
(package private) Type
copyType(Type bound)
static WildcardType
create(Type bound, boolean isExtends)
Deprecated.usecreateUpperBound(Type)
orcreateLowerBound(Type)
insteadstatic WildcardType
createLowerBound(java.lang.Class<?> lowerBound)
Create a new wildcard type with a lower (super
) bound.static WildcardType
createLowerBound(Type lowerBound)
Create a new wildcard type with a lower (super
) bound.static WildcardType
createUpperBound(java.lang.Class<?> upperBound)
Create a new wildcard type with an upper (extends
) bound.static WildcardType
createUpperBound(Type upperBound)
Create a new wildcard type with an upper (extends
) bound.boolean
equals(java.lang.Object o)
Compares thisType
with another type.Type
extendsBound()
Returns the upper bound of this wildcard (e.g.int
hashCode()
Computes a hash code representing this type.(package private) boolean
hasImplicitObjectBound()
(package private) boolean
internEquals(java.lang.Object o)
(package private) int
internHashCode()
(package private) boolean
isExtends()
Type.Kind
kind()
Returns the kind of Type this is.DotName
name()
Returns the name of this type (or its erasure in case of generic types) as aDotName
, using theClass.getName()
format.Type
superBound()
Returns the lower bound of this wildcard (e.g.(package private) java.lang.String
toString(boolean simple)
-
Methods inherited from class org.jboss.jandex.Type
addAnnotation, annotation, annotationArray, annotations, annotationsWithRepeatable, appendAnnotations, asArrayType, asClassType, asParameterizedType, asPrimitiveType, asTypeVariable, asTypeVariableReference, asUnresolvedTypeVariable, asVoidType, create, create, createWithAnnotations, descriptor, hasAnnotation, parse, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.jboss.jandex.Descriptor
descriptor
-
-
-
-
Field Detail
-
UNBOUNDED
public static final WildcardType UNBOUNDED
A wildcard without a bound, an equivalent of?
.- Since:
- 3.1.0
-
isExtends
private final boolean isExtends
-
bound
private final Type bound
-
hash
private int hash
-
-
Constructor Detail
-
WildcardType
WildcardType(Type bound, boolean isExtends)
-
WildcardType
WildcardType(Type bound, boolean isExtends, AnnotationInstance[] annotations)
-
-
Method Detail
-
create
@Deprecated public static WildcardType create(Type bound, boolean isExtends)
Deprecated.usecreateUpperBound(Type)
orcreateLowerBound(Type)
insteadCreates a new wildcard type.- Parameters:
bound
- the bound (lower or upper)isExtends
- true if the bound is an upper (extends
) bound, false if lower (super
)- Returns:
- the new instance
- Since:
- 2.1
-
createUpperBound
public static WildcardType createUpperBound(Type upperBound)
Create a new wildcard type with an upper (extends
) bound.- Parameters:
upperBound
- the upper bound- Returns:
- the new instance
- Since:
- 3.1.0
-
createUpperBound
public static WildcardType createUpperBound(java.lang.Class<?> upperBound)
Create a new wildcard type with an upper (extends
) bound.- Parameters:
upperBound
- the upper bound- Returns:
- the new instance
- Since:
- 3.1.0
-
createLowerBound
public static WildcardType createLowerBound(Type lowerBound)
Create a new wildcard type with a lower (super
) bound.- Parameters:
lowerBound
- the lower bound- Returns:
- the new instance
- Since:
- 3.1.0
-
createLowerBound
public static WildcardType createLowerBound(java.lang.Class<?> lowerBound)
Create a new wildcard type with a lower (super
) bound.- Parameters:
lowerBound
- the lower bound- Returns:
- the new instance
- Since:
- 3.1.0
-
builder
public static WildcardType.Builder builder()
Create a builder of a wildcard type.- Returns:
- the builder
- Since:
- 3.1.0
-
name
public DotName name()
Description copied from class:Type
Returns the name of this type (or its erasure in case of generic types) as aDotName
, using theClass.getName()
format. Specifically:- for primitive types and the void pseudo-type, the corresponding Java keyword
is returned (
void
,boolean
,byte
,short
,int
,long
,float
,double
,char
); - for class types, the binary name of the class is returned;
- for array types, a string is returned that consists of one or more
[
characters corresponding to the number of dimensions of the array type, followed by the element type as a single-character code for primitive types orLbinary.name.of.TheClass;
for class types (for example,[I
forint[]
or[[Ljava.lang.String;
forString[][]
); - for parameterized types, the binary name of the generic class is returned
(for example,
java.util.List
forList<String>
); - for type variables, the name of the first bound of the type variable is returned,
or
java.lang.Object
for type variables that have no bound; - for wildcard types, the name of the upper bound is returned,
or
java.lang.Object
if the wildcard type does not have an upper bound (for example,java.lang.Number
for? extends Number
).
- for primitive types and the void pseudo-type, the corresponding Java keyword
is returned (
-
extendsBound
public Type extendsBound()
Returns the upper bound of this wildcard (e.g.SomeType
for? extends SomeType
).Returns
java.lang.Object
if this wildcard declares a lower bound (? super SomeType
).- Returns:
- the upper bound, or
Object
if this wildcard has a lower bound
-
superBound
public Type superBound()
Returns the lower bound of this wildcard (e.g.SomeType
for? super SomeType
).Returns
null
if this wildcard declares an upper bound (? extends SomeType
).- Returns:
- the lower bound, or
null
if this wildcard has an upper bound
-
bound
Type bound()
-
isExtends
boolean isExtends()
-
hasImplicitObjectBound
boolean hasImplicitObjectBound()
-
asWildcardType
public WildcardType asWildcardType()
Description copied from class:Type
Casts this type to aWildcardType
and returns it if the kind isType.Kind.WILDCARD_TYPE
. Throws an exception otherwise.- Overrides:
asWildcardType
in classType
- Returns:
- a
WildcardType
-
copyType
Type copyType(AnnotationInstance[] newAnnotations)
-
equals
public boolean equals(java.lang.Object o)
Description copied from class:Type
Compares thisType
with 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:Type
Computes a hash code representing this type.
-
internEquals
boolean internEquals(java.lang.Object o)
- Overrides:
internEquals
in classType
-
internHashCode
int internHashCode()
- Overrides:
internHashCode
in classType
-
-