org.aspectj.weaver
Class TypeVariableReferenceType

java.lang.Object
  extended by org.aspectj.weaver.UnresolvedType
      extended by org.aspectj.weaver.ResolvedType
          extended by org.aspectj.weaver.ReferenceType
              extended by org.aspectj.weaver.TypeVariableReferenceType
All Implemented Interfaces:
AnnotatedElement, Traceable, TypeVariableDeclaringElement, TypeVariableReference

public class TypeVariableReferenceType
extends ReferenceType
implements TypeVariableReference

ReferenceType pointing to a type variable. The delegate for this reference type is the upperbound on the type variable (so Object if not otherwise specified).


Nested Class Summary
 
Nested classes/interfaces inherited from class org.aspectj.weaver.UnresolvedType
UnresolvedType.TypeKind
 
Field Summary
 
Fields inherited from class org.aspectj.weaver.ReferenceType
EMPTY_ARRAY
 
Fields inherited from class org.aspectj.weaver.ResolvedType
crosscuttingMembers, EMPTY_RESOLVED_TYPE_ARRAY, interTypeMungers, MISSING, NONE, PARAMETERIZED_TYPE_IDENTIFIER, temporaryAnnotationTypes, validBoxing, world
 
Fields inherited from class org.aspectj.weaver.UnresolvedType
ANNOTATION, ARRAY_WITH_JUST_OBJECT, AT_INHERITED, AT_RETENTION, AT_TARGET, BOOLEAN, BYTE, CHAR, CLONEABLE, DOUBLE, ENUM, ERROR, FLOAT, INT, JAVA_LANG_ANNOTATION, JAVA_LANG_CLASS_ARRAY, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JL_CLASS, JL_EXCEPTION, JL_STRING, JOINPOINT_ENCLOSINGSTATICPART, JOINPOINT_STATICPART, LONG, MISSING_NAME, OBJECT, OBJECTARRAY, RUNTIME_EXCEPTION, SERIALIZABLE, SHORT, signature, signatureErasure, SOMETHING, SUPPRESS_AJ_WARNINGS, THROWABLE, typeKind, typeParameters, typeVariables, VOID
 
Constructor Summary
TypeVariableReferenceType(TypeVariable typeVariable, World world)
           
 
Method Summary
 boolean equals(java.lang.Object other)
          Equality is checked based on the underlying signature.
 ReferenceTypeDelegate getDelegate()
          For a TypeVariableReferenceType the delegate is the delegate for the first bound.
 java.lang.String getSignature()
          return the signature for a *REFERENCE* to a type variable, which is simply: Tname; there is no bounds info included, that is in the signature of the type variable itself
 TypeVariable getTypeVariable()
           
 java.lang.String getTypeVariableName()
           
 ReferenceType getUpperBound()
           
 int hashCode()
          Equality is checked based on the underlying signature, so the hash code of a particular type is the hash code of its signature string.
 boolean isAnnotation()
          Note: Only overridden by Name subtype.
 boolean isGenericWildcard()
           
 boolean isTypeVariableReference()
           
 boolean isTypeVariableResolved()
           
 UnresolvedType parameterize(java.util.Map<java.lang.String,UnresolvedType> typeBindings)
          Iff I am a parameterized type, and any of my parameters are type variable references (or nested parameterized types), return a version with those type parameters replaced in accordance with the passed bindings.
 ResolvedType resolve(World world)
          resolve the type variable we are managing and then return this object.
 java.lang.String toString()
          Returns a java language string representation of this type.
 
Methods inherited from class org.aspectj.weaver.ReferenceType
addAnnotation, addParent, canAnnotationTargetType, checkDuplicates, demoteToSimpleType, doesNotExposeShadowMungers, ensureConsistent, findDerivativeType, fromTypeX, getAnnotationOfType, getAnnotations, getAnnotationTargetKinds, getAnnotationTypes, getCompilerVersion, getDeclaredFields, getDeclaredGenericSignature, getDeclaredInterfaces, getDeclaredMethods, getDeclaredPointcuts, getDeclares, getEndPos, getGenericSignature, getGenericType, getModifiers, getNameAsIdentifier, getOuterClass, getPerClause, getPrivilegedAccesses, getRetentionPolicy, getSignatureForAttribute, getSourceContext, getSourceLocation, getStartPos, getSuperclass, getTypeMungers, getTypeVariables, getWeaverState, hasAnnotation, hasNewInterfaces, isAnnotationStyleAspect, isAnnotationWithRuntimeRetention, isAnonymous, isAspect, isAssignableFrom, isAssignableFrom, isClass, isCoerceableFrom, isEnum, isExposedToWeaver, isGenericType, isNested, setDelegate, setEndPos, setGenericType, setStartPos
 
Methods inherited from class org.aspectj.weaver.ResolvedType
addInterTypeMunger, ajMembersNeedParameterization, checkInterTypeMungers, checkLegalOverride, clearInterTypeMungers, collectCrosscuttingMembers, collectDeclares, collectInterTypeMungers, conflictingSignature, conflictingSignature, discoverActualOccurrenceOfTypeInHierarchy, fillInAnyTypeParameters, findPointcut, getAjMemberParameterizationMap, getBinaryPath, getDeclaredAdvice, getDeclaredJavaFields, getDeclaredJavaMethods, getDeclaredShadowMungers, getDeclaringType, getDirectSupertypes, getExposedPointcuts, getFields, getHierarchy, getHierarchy, getHierarchyWithoutIterator, getInterTypeMungers, getInterTypeMungersIncludingSupers, getInterTypeParentMungers, getInterTypeParentMungersIncludingSupers, getMemberParameterizationMap, getMethods, getMethodsIncludingIntertypeDeclarations, getMethodsWithoutIterator, getPointcuts, getRawType, getResolvedComponentType, getResolvedTypeParameters, getSize, getTopmostImplementor, getWorld, isAbstract, isCacheable, isCheckedException, isConvertableFrom, isException, isFinal, isGroovyObject, isInheritedAnnotation, isInterface, isMissing, isMissing, isMoreVisible, isParameterizedWithTypeVariable, isPrimitiveArray, isSynthetic, isTopmostImplementor, isTypeHierarchyComplete, isVisible, lookupDirectlyDeclaredMemberNoSupers, lookupField, lookupMemberIncludingITDsOnInterfaces, lookupMemberNoSupers, lookupMemberWithSupersAndITDs, lookupMethod, lookupMethodInITDs, lookupResolvedMember, lookupSyntheticMember, makeArray, matches, needsNoConversionFrom, parameterizedWith, setBinaryPath, tagAsTypeHierarchyComplete
 
Methods inherited from class org.aspectj.weaver.UnresolvedType
add, forGenericType, forGenericTypeSignature, forGenericTypeVariables, forName, forNames, forPrimitiveType, forRawTypeName, forSignature, forSignatures, getBaseName, getClassName, getComponentType, getErasureSignature, getName, getNames, getOutermostType, getPackageName, getPackageNameAsIdentifier, getRawName, getSimpleBaseName, getSimpleName, getTypekind, getTypeParameters, getTypeVariableNamed, insert, isArray, isParameterizedOrGenericType, isParameterizedOrRawType, isParameterizedType, isPrimitiveType, isRawType, isSimpleType, isVoid, makeArray, needsModifiableDelegate, read, readArray, setNeedsModifiableDelegate, toDebugString, toTraceString, write, writeArray
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TypeVariableReferenceType

public TypeVariableReferenceType(TypeVariable typeVariable,
                                 World world)
Method Detail

equals

public boolean equals(java.lang.Object other)
Description copied from class: UnresolvedType
Equality is checked based on the underlying signature.

Overrides:
equals in class ResolvedType

hashCode

public int hashCode()
Description copied from class: UnresolvedType
Equality is checked based on the underlying signature, so the hash code of a particular type is the hash code of its signature string.

Overrides:
hashCode in class UnresolvedType

getDelegate

public ReferenceTypeDelegate getDelegate()
For a TypeVariableReferenceType the delegate is the delegate for the first bound.

Overrides:
getDelegate in class ReferenceType

parameterize

public UnresolvedType parameterize(java.util.Map<java.lang.String,UnresolvedType> typeBindings)
Description copied from class: ResolvedType
Iff I am a parameterized type, and any of my parameters are type variable references (or nested parameterized types), return a version with those type parameters replaced in accordance with the passed bindings.

Overrides:
parameterize in class ResolvedType

getTypeVariable

public TypeVariable getTypeVariable()
Specified by:
getTypeVariable in interface TypeVariableReference

isTypeVariableReference

public boolean isTypeVariableReference()
Overrides:
isTypeVariableReference in class UnresolvedType

toString

public java.lang.String toString()
Description copied from class: UnresolvedType
Returns a java language string representation of this type.

Overrides:
toString in class UnresolvedType

isGenericWildcard

public boolean isGenericWildcard()
Overrides:
isGenericWildcard in class UnresolvedType

isAnnotation

public boolean isAnnotation()
Description copied from class: ResolvedType
Note: Only overridden by Name subtype.

Overrides:
isAnnotation in class ReferenceType

getSignature

public java.lang.String getSignature()
return the signature for a *REFERENCE* to a type variable, which is simply: Tname; there is no bounds info included, that is in the signature of the type variable itself

Overrides:
getSignature in class UnresolvedType
Returns:
the java JVM signature string for this type.

getTypeVariableName

public java.lang.String getTypeVariableName()
Returns:
the name of the type variable

getUpperBound

public ReferenceType getUpperBound()

resolve

public ResolvedType resolve(World world)
resolve the type variable we are managing and then return this object. 'this' is already a ResolvedType but the type variable may transition from a not-resolved to a resolved state.

Overrides:
resolve in class UnresolvedType
Parameters:
world - the World within which to resolve.
Returns:
a resolved type representing this type in the appropriate world.

isTypeVariableResolved

public boolean isTypeVariableResolved()
Returns:
true if the type variable this reference is managing is resolved