com.fasterxml.classmate.types
Class ResolvedRecursiveType

java.lang.Object
  extended by com.fasterxml.classmate.ResolvedType
      extended by com.fasterxml.classmate.types.ResolvedRecursiveType

public class ResolvedRecursiveType
extends ResolvedType

Specialized type placeholder used in cases where type definition is recursive; to avoid infinite loop, reference that would be "back" in hierarchy is represented by an instance of this class. Underlying information is achievable (for full resolution), but not exposed using super type (parent) accessors; and has special handling when used for constructing descriptions.


Field Summary
protected  ResolvedType _referencedType
          Actual fully resolved type; assigned once resultion is complete
 
Fields inherited from class com.fasterxml.classmate.ResolvedType
_erasedType, _typeBindings, NO_CONSTRUCTORS, NO_FIELDS, NO_METHODS, NO_TYPES
 
Constructor Summary
ResolvedRecursiveType(Class<?> erased, TypeBindings bindings)
           
 
Method Summary
 StringBuilder appendBriefDescription(StringBuilder sb)
           
 StringBuilder appendErasedSignature(StringBuilder sb)
           
 StringBuilder appendFullDescription(StringBuilder sb)
           
 StringBuilder appendSignature(StringBuilder sb)
           
 boolean canCreateSubtypes()
          Method that can be used to check if call to TypeResolver.resolveSubtype(ResolvedType, Class) may ever succeed; if false, it will fail with an exception, if true, it may succeed.
 ResolvedType getArrayElementType()
          To avoid infinite loops, will return null type
 List<RawConstructor> getConstructors()
           
 List<ResolvedType> getImplementedInterfaces()
          To avoid infinite loops, will return empty list
 List<RawField> getMemberFields()
           
 List<RawMethod> getMemberMethods()
           
 ResolvedType getParentClass()
          To avoid infinite loops, will return null;
 ResolvedType getSelfReferencedType()
          Accessor that must be used to find out actual type in case of "self-reference"; case where type refers recursive to itself (like, T implements Comparable<T>).
 List<RawField> getStaticFields()
           
 List<RawMethod> getStaticMethods()
           
 boolean isAbstract()
           
 boolean isArray()
          Method that indicates whether this type is an array type.
 boolean isInterface()
           
 boolean isPrimitive()
          Method that indicates whether this type is one of small number of primitive Java types; not including array types of primitive types but just basic primitive types.
 void setReference(ResolvedType ref)
           
 
Methods inherited from class com.fasterxml.classmate.ResolvedType
_appendClassDescription, _appendClassName, _appendClassSignature, _appendErasedClassSignature, _getConstructors, _getFields, _getMethods, canCreateSubtype, equals, findSupertype, getBriefDescription, getErasedSignature, getErasedType, getFullDescription, getSignature, getTypeBindings, getTypeParameters, hashCode, isConcrete, isInstanceOf, toString, typeParametersFor
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

_referencedType

protected ResolvedType _referencedType
Actual fully resolved type; assigned once resultion is complete

Constructor Detail

ResolvedRecursiveType

public ResolvedRecursiveType(Class<?> erased,
                             TypeBindings bindings)
Method Detail

canCreateSubtypes

public boolean canCreateSubtypes()
Description copied from class: ResolvedType
Method that can be used to check if call to TypeResolver.resolveSubtype(ResolvedType, Class) may ever succeed; if false, it will fail with an exception, if true, it may succeed.

Specified by:
canCreateSubtypes in class ResolvedType

setReference

public void setReference(ResolvedType ref)

getParentClass

public ResolvedType getParentClass()
To avoid infinite loops, will return null;

Specified by:
getParentClass in class ResolvedType

getSelfReferencedType

public ResolvedType getSelfReferencedType()
Description copied from class: ResolvedType
Accessor that must be used to find out actual type in case of "self-reference"; case where type refers recursive to itself (like, T implements Comparable<T>). For all other types returns null but for self-references "real" type. Separate accessor is provided to avoid accidental infinite loops.

Specified by:
getSelfReferencedType in class ResolvedType

getImplementedInterfaces

public List<ResolvedType> getImplementedInterfaces()
To avoid infinite loops, will return empty list

Specified by:
getImplementedInterfaces in class ResolvedType
Returns:
List of interfaces this type implements, if any; empty list if none

getArrayElementType

public ResolvedType getArrayElementType()
To avoid infinite loops, will return null type

Specified by:
getArrayElementType in class ResolvedType

isInterface

public boolean isInterface()
Specified by:
isInterface in class ResolvedType

isAbstract

public boolean isAbstract()
Specified by:
isAbstract in class ResolvedType

isArray

public boolean isArray()
Description copied from class: ResolvedType
Method that indicates whether this type is an array type.

Specified by:
isArray in class ResolvedType

isPrimitive

public boolean isPrimitive()
Description copied from class: ResolvedType
Method that indicates whether this type is one of small number of primitive Java types; not including array types of primitive types but just basic primitive types.

Specified by:
isPrimitive in class ResolvedType

getMemberFields

public List<RawField> getMemberFields()
Overrides:
getMemberFields in class ResolvedType

getStaticFields

public List<RawField> getStaticFields()
Overrides:
getStaticFields in class ResolvedType

getStaticMethods

public List<RawMethod> getStaticMethods()
Overrides:
getStaticMethods in class ResolvedType

getMemberMethods

public List<RawMethod> getMemberMethods()
Overrides:
getMemberMethods in class ResolvedType

getConstructors

public List<RawConstructor> getConstructors()
Overrides:
getConstructors in class ResolvedType

appendSignature

public StringBuilder appendSignature(StringBuilder sb)
Specified by:
appendSignature in class ResolvedType

appendErasedSignature

public StringBuilder appendErasedSignature(StringBuilder sb)
Specified by:
appendErasedSignature in class ResolvedType

appendBriefDescription

public StringBuilder appendBriefDescription(StringBuilder sb)
Specified by:
appendBriefDescription in class ResolvedType

appendFullDescription

public StringBuilder appendFullDescription(StringBuilder sb)
Specified by:
appendFullDescription in class ResolvedType


Copyright © 2011 fasterxml.com. All Rights Reserved.