public class ParameterizedTypeReference extends LightweightTypeReference
LightweightTypeReference.IdentifierFunction, LightweightTypeReference.JavaIdentifierFunction, LightweightTypeReference.SimpleNameFunction, LightweightTypeReference.UniqueIdentifierFunction
Modifier and Type | Field and Description |
---|---|
protected boolean |
resolved |
KIND_ANY_TYPE_REFERENCE, KIND_ARRAY_TYPE_REFERENCE, KIND_COMPOUND_TYPE_REFERENCE, KIND_FUNCTION_TYPE_REFERENCE, KIND_INNER_FUNCTION_TYPE_REFERENCE, KIND_INNER_TYPE_REFERENCE, KIND_LIGHTWEIGHT_TYPE_REFERENCE, KIND_PARAMETERIZED_TYPE_REFERENCE, KIND_UNBOUND_TYPE_REFERENCE, KIND_UNKNOWN_TYPE_REFERENCE, KIND_WILDCARD_TYPE_REFERENCE
Constructor and Description |
---|
ParameterizedTypeReference(ITypeReferenceOwner owner,
JvmType type) |
Modifier and Type | Method and Description |
---|---|
void |
accept(TypeReferenceVisitor visitor) |
<Param> void |
accept(TypeReferenceVisitorWithParameter<Param> visitor,
Param param) |
<Param,Result> |
accept(TypeReferenceVisitorWithParameterAndResult<Param,Result> visitor,
Param param) |
<Result> Result |
accept(TypeReferenceVisitorWithResult<Result> visitor) |
void |
addTypeArgument(LightweightTypeReference argument) |
protected void |
checkStaticFlag(JvmDeclaredType type) |
protected void |
copyTypeArguments(ParameterizedTypeReference result,
ITypeReferenceOwner owner) |
protected LightweightTypeReference |
createRawTypeReference(JvmType rawType) |
protected ParameterizedTypeReference |
doCopyInto(ITypeReferenceOwner owner) |
FunctionTypeReference |
getAsFunctionTypeReference()
Returns the equivalent
FunctionTypeReference if this reference
points to a function or procedure
or if it is already a function type reference. |
protected java.lang.String |
getAsString(java.lang.String type,
com.google.common.base.Function<LightweightTypeReference,java.lang.String> format) |
FunctionTypeKind |
getFunctionTypeKind() |
java.lang.String |
getIdentifier()
Returns the identifier of this type reference.
|
java.lang.String |
getJavaIdentifier() |
int |
getKind()
Subclasses must override this method.
|
LightweightTypeReference |
getPrimitiveIfWrapperType() |
Primitives.Primitive |
getPrimitiveKind() |
Primitives.Primitive |
getPrimitiveKindIfWrapperType() |
LightweightTypeReference |
getRawSuperType(JvmType rawType) |
LightweightTypeReference |
getRawTypeReference() |
java.util.List<JvmType> |
getRawTypes() |
java.lang.String |
getSimpleName()
Prints the simple name of this type reference.
|
LightweightTypeReference |
getSuperType(java.lang.Class<?> rawType)
Returns the resolved super type for the given raw type or
null if the raw type
is not a valid super type of this type. |
LightweightTypeReference |
getSuperType(JvmType rawType)
Returns the resolved super type for the given raw type or null if the raw type
is not a valid super type of this type.
|
protected java.util.List<LightweightTypeReference> |
getSuperTypes(TypeParameterSubstitutor<?> substitutor) |
JvmType |
getType() |
java.util.List<LightweightTypeReference> |
getTypeArguments()
Returns the type arguments of this reference if it has any.
|
java.lang.String |
getUniqueIdentifier()
Returns an identifier that allows to disambiguate type parameter names that have
different origins.
|
LightweightTypeReference |
getWrapperTypeIfPrimitive() |
boolean |
isAnonymous() |
protected boolean |
isInner(JvmType type) |
boolean |
isInterfaceType() |
boolean |
isOwnedBy(ITypeReferenceOwner owner) |
boolean |
isPrimitive() |
boolean |
isPrimitiveVoid() |
boolean |
isRawType()
Returns
true is this type points to a raw type. |
boolean |
isResolved() |
boolean |
isType(java.lang.Class<?> clazz)
Returns true if this type reference represents an type with the given
raw type
clazz . |
protected boolean |
isTypeVisible(IVisibilityHelper visibilityHelper) |
boolean |
isVisible(IVisibilityHelper visibilityHelper)
Returns
true if this type is fully visible according to the given visibilityHelper . |
boolean |
isWrapper() |
ParameterizedTypeReference |
toInstanceTypeReference()
Returns a projection of this type to the instance level.
|
JvmTypeReference |
toJavaCompliantTypeReference(IVisibilityHelper visibilityHelper)
Converts this type reference to a
JvmTypeReference that can
be used in Java source code. |
JvmTypeReference |
toTypeReference() |
ArrayTypeReference |
tryConvertToArray()
Returns the array representation of this reference if its represents a subtype of
Iterable
or already an array itself. |
FunctionTypeReference |
tryConvertToFunctionTypeReference(boolean rawType)
Converts this reference to a
FunctionTypeReference if the referenced type is a SAM type. |
LightweightTypeReference |
tryConvertToListType()
Returns the list representation of this reference if it represents an array or is
already a subtype of
List . |
collectSuperTypes, collectSuperTypes, copyInto, createSubstitutor, expose, findNonNullType, findType, getAllSuperTypes, getComponentType, getHumanReadableName, getInvariantBoundSubstitute, getLowerBoundSubstitute, getMultiTypeComponents, getNamedType, getNonInterfaceTypes, getOuter, getOwner, getServices, getSuperTypes, getTypesFactory, getUniqueIdentifier, getUpperBoundSubstitute, hasTypeArguments, internalFindTopLevelType, internalIsAssignableFrom, isAny, isArray, isAssignableFrom, isAssignableFrom, isAssignableFrom, isAssignableFrom, isFunctionType, isMultiType, isSubtypeOf, isSubtypeOf, isSynonym, isUnknown, isValidHint, isWildcard, toJavaCompliantTypeReference, toJavaCompliantTypeReference, toJavaType, toString
public ParameterizedTypeReference(ITypeReferenceOwner owner, JvmType type)
protected void checkStaticFlag(JvmDeclaredType type)
public int getKind()
getKind
in class LightweightTypeReference
public JvmTypeReference toTypeReference()
toTypeReference
in class LightweightTypeReference
public LightweightTypeReference getRawTypeReference()
getRawTypeReference
in class LightweightTypeReference
public java.util.List<JvmType> getRawTypes()
getRawTypes
in class LightweightTypeReference
protected boolean isTypeVisible(IVisibilityHelper visibilityHelper)
public boolean isVisible(IVisibilityHelper visibilityHelper)
LightweightTypeReference
true
if this type is fully visible according to the given visibilityHelper
.
All components and bounds are taken into account, e.g.
arrays
use their component type
and generified types
check their type arguments, too.isVisible
in class LightweightTypeReference
public JvmTypeReference toJavaCompliantTypeReference(IVisibilityHelper visibilityHelper)
LightweightTypeReference
JvmTypeReference
that can
be used in Java source code.toJavaCompliantTypeReference
in class LightweightTypeReference
public JvmType getType()
getType
in class LightweightTypeReference
public boolean isRawType()
LightweightTypeReference
true
is this type points to a raw type.
That is, it points to a parameterized type but does not define type arguments or
it points to an external type parameter that has a raw type constraint.
Type parameters that are declared by the current owner are not considered to be raw types.
A type is also a raw type if it inherits from a raw type.isRawType
in class LightweightTypeReference
public boolean isOwnedBy(ITypeReferenceOwner owner)
isOwnedBy
in class LightweightTypeReference
public LightweightTypeReference getWrapperTypeIfPrimitive()
getWrapperTypeIfPrimitive
in class LightweightTypeReference
public LightweightTypeReference getPrimitiveIfWrapperType()
getPrimitiveIfWrapperType
in class LightweightTypeReference
public boolean isAnonymous()
isAnonymous
in class LightweightTypeReference
public boolean isPrimitive()
isPrimitive
in class LightweightTypeReference
public Primitives.Primitive getPrimitiveKind()
getPrimitiveKind
in class LightweightTypeReference
public Primitives.Primitive getPrimitiveKindIfWrapperType()
getPrimitiveKindIfWrapperType
in class LightweightTypeReference
public boolean isPrimitiveVoid()
isPrimitiveVoid
in class LightweightTypeReference
public boolean isInterfaceType()
isInterfaceType
in class LightweightTypeReference
public boolean isWrapper()
isWrapper
in class LightweightTypeReference
protected java.util.List<LightweightTypeReference> getSuperTypes(TypeParameterSubstitutor<?> substitutor)
getSuperTypes
in class LightweightTypeReference
public LightweightTypeReference getSuperType(java.lang.Class<?> rawType)
LightweightTypeReference
null
if the raw type
is not a valid super type of this type.getSuperType
in class LightweightTypeReference
rawType
- the raw type that should be resolved.public LightweightTypeReference getSuperType(JvmType rawType)
LightweightTypeReference
getSuperType
in class LightweightTypeReference
rawType
- the raw type that should be resolved.public LightweightTypeReference getRawSuperType(JvmType rawType)
protected LightweightTypeReference createRawTypeReference(JvmType rawType)
protected boolean isInner(JvmType type)
public java.util.List<LightweightTypeReference> getTypeArguments()
LightweightTypeReference
List<String>
is String
.
? extends List<String>
.
Raw types don't carry type arguments. Wildcards with more than one upper bound
don't carry type arguments.getTypeArguments
in class LightweightTypeReference
protected ParameterizedTypeReference doCopyInto(ITypeReferenceOwner owner)
doCopyInto
in class LightweightTypeReference
protected void copyTypeArguments(ParameterizedTypeReference result, ITypeReferenceOwner owner)
public boolean isResolved()
isResolved
in class LightweightTypeReference
public void addTypeArgument(LightweightTypeReference argument)
public java.lang.String getSimpleName()
LightweightTypeReference
getSimpleName
in class LightweightTypeReference
public java.lang.String getIdentifier()
LightweightTypeReference
getIdentifier
in class LightweightTypeReference
public java.lang.String getUniqueIdentifier()
LightweightTypeReference
getUniqueIdentifier
in class LightweightTypeReference
public java.lang.String getJavaIdentifier()
getJavaIdentifier
in class LightweightTypeReference
protected java.lang.String getAsString(java.lang.String type, com.google.common.base.Function<LightweightTypeReference,java.lang.String> format)
public boolean isType(java.lang.Class<?> clazz)
LightweightTypeReference
clazz
.
Returns false if this is not exactly the given type, but a sub type, a
super type or a completely unrelated type.isType
in class LightweightTypeReference
public void accept(TypeReferenceVisitor visitor)
accept
in class LightweightTypeReference
public <Param> void accept(TypeReferenceVisitorWithParameter<Param> visitor, Param param)
accept
in class LightweightTypeReference
public <Result> Result accept(TypeReferenceVisitorWithResult<Result> visitor)
accept
in class LightweightTypeReference
public <Param,Result> Result accept(TypeReferenceVisitorWithParameterAndResult<Param,Result> visitor, Param param)
accept
in class LightweightTypeReference
public FunctionTypeKind getFunctionTypeKind()
getFunctionTypeKind
in class LightweightTypeReference
public FunctionTypeReference getAsFunctionTypeReference()
FunctionTypeReference
if this reference
points to a function
or procedure
or if it is already a function type reference.
Otherwise returns null
.getAsFunctionTypeReference
in class LightweightTypeReference
FunctionTypes.getAsFunctionTypeReference(ParameterizedTypeReference)
public FunctionTypeReference tryConvertToFunctionTypeReference(boolean rawType)
FunctionTypeReference
if the referenced type is a SAM type.
Returns null
if this reference does not point to a valid function type.tryConvertToFunctionTypeReference
in class LightweightTypeReference
rawType
- if a raw view on the function type is sufficient.FunctionTypes.tryConvertToFunctionTypeReference(ParameterizedTypeReference, boolean)
public ArrayTypeReference tryConvertToArray()
Iterable
or already an array itself.
If the iterable's type is a primitive wrapper, the array is not the primitive array but
the wrapper array. May return null
if the conversion is not possible.tryConvertToArray
in class LightweightTypeReference
ArrayTypeReference
or null
.ArrayTypes.tryConvertToArray(ParameterizedTypeReference)
public LightweightTypeReference tryConvertToListType()
LightweightTypeReference
List
.
If the array's type is a primitive, the list's element type is the wrapper.
May return null
if the conversion is not possible.tryConvertToListType
in class LightweightTypeReference
null
.public ParameterizedTypeReference toInstanceTypeReference()
ArrayList<? extends Iterable<? extends String>>
is ArrayList<Iterable<? extends String>>
since it is possible to create instances
of ArrayList<Iterable<? extends String>>
.