org.eclipse.jdt.internal.compiler.lookup
Class TypeBinding

java.lang.Object
  extended by org.eclipse.jdt.internal.compiler.lookup.Binding
      extended by org.eclipse.jdt.internal.compiler.lookup.TypeBinding
Direct Known Subclasses:
ArrayBinding, BaseTypeBinding, ReferenceBinding

public abstract class TypeBinding
extends Binding


Field Summary
static BaseTypeBinding BOOLEAN
           
static BaseTypeBinding BYTE
           
static BaseTypeBinding CHAR
           
static BaseTypeBinding DOUBLE
           
static BaseTypeBinding FLOAT
           
 int id
           
static BaseTypeBinding INT
          Base type definitions
static BaseTypeBinding LONG
           
static BaseTypeBinding NULL
           
static BaseTypeBinding SHORT
           
 long tagBits
           
static BaseTypeBinding VOID
           
 
Fields inherited from class org.eclipse.jdt.internal.compiler.lookup.Binding
ANY_EXCEPTION, ARRAY_TYPE, BASE_TYPE, FIELD, GENERIC_TYPE, IMPORT, LOCAL, METHOD, NO_ANNOTATIONS, NO_ELEMENT_VALUE_PAIRS, NO_EXCEPTIONS, NO_FIELDS, NO_MEMBER_TYPES, NO_METHODS, NO_PARAMETERS, NO_SUPERINTERFACES, NO_TYPE_VARIABLES, NO_TYPES, PACKAGE, PARAMETERIZED_TYPE, RAW_TYPE, TYPE, TYPE_PARAMETER, VARIABLE, WILDCARD_TYPE
 
Constructor Summary
TypeBinding()
           
 
Method Summary
 boolean canBeInstantiated()
           
 TypeBinding capture(Scope scope, int position)
          Perform capture conversion on a given type (only effective on parameterized type with wildcards)
 void collectSubstitutes(Scope scope, TypeBinding actualType, java.util.Map substitutes, int constraint)
          Collect the substitutes into a map for certain type variables inside the receiver type e.g.
abstract  char[] constantPoolName()
          Answer the receiver's constant pool name.
 java.lang.String debugName()
           
 int dimensions()
           
 ReferenceBinding enclosingType()
           
 TypeBinding erasure()
           
 TypeBinding findSuperTypeWithSameErasure(TypeBinding otherType)
          Find supertype which erases to a given type, or null if not found
 TypeBinding genericCast(TypeBinding otherType)
          Returns the type to use for generic cast, or null if none required
 char[] genericTypeSignature()
          Answer the receiver classfile signature.
abstract  PackageBinding getPackage()
           
 boolean isAnnotationType()
           
 boolean isAnonymousType()
           
 boolean isArrayType()
           
 boolean isBaseType()
           
 boolean isBoundParameterizedType()
          Returns true if parameterized type AND not of the form List
 boolean isCapture()
          Returns true if the type is the capture of some wildcard
 boolean isClass()
           
abstract  boolean isCompatibleWith(TypeBinding right)
           
 boolean isEnum()
           
 boolean isEquivalentTo(TypeBinding otherType)
          Returns true if a type is identical to another one, or for generic types, true if compared to its raw type.
 boolean isGenericType()
           
 boolean isHierarchyInconsistent()
           
 boolean isInterface()
           
 boolean isIntersectingWith(TypeBinding otherType)
          Returns true if a type is intersecting with another one,
 boolean isIntersectionType()
          Returns true if the current type denotes an intersection type: Number & Comparable
 boolean isLocalType()
           
 boolean isMemberType()
           
 boolean isNestedType()
           
 boolean isNumericType()
           
 boolean isParameterizedType()
          Returns true if the type is parameterized, e.g.
 boolean isParameterizedWithOwnVariables()
          Returns true if the type is parameterized using its own type variables as arguments
 boolean isProvablyDistinctFrom(TypeBinding otherType, int depth)
          Returns true if the two types are statically known to be different at compile-time, e.g.
 boolean isRawType()
           
 boolean isReifiable()
          JLS(3) 4.7.
 boolean isTypeArgumentContainedBy(TypeBinding otherType)
           
 boolean isTypeArgumentIntersecting(TypeBinding otherArgument)
          Returns false if two given types could not intersect as argument types: List & List --> false List & List --> true List & List --> false
 boolean isTypeVariable()
          Returns true if the type was declared as a type variable
 boolean isUnboundWildcard()
          Returns true if wildcard type of the form '?' (no bound)
 boolean isUncheckedException(boolean includeSupertype)
          Returns true if the type is a subclass of java.lang.Error or java.lang.RuntimeException
 boolean isWildcard()
          Returns true if the type is a wildcard
 int kind()
           
 TypeBinding leafComponentType()
           
 boolean needsUncheckedConversion(TypeBinding targetType)
          Meant to be invoked on compatible types, to figure if unchecked conversion is necessary
 char[] qualifiedPackageName()
          Answer the qualified name of the receiver's package separated by periods or an empty string if its the default package.
abstract  char[] qualifiedSourceName()
          Answer the source name for the type.
 char[] signature()
          Answer the receiver classfile signature.
abstract  char[] sourceName()
           
 void swapUnresolved(UnresolvedReferenceBinding unresolvedType, ReferenceBinding resolvedType, LookupEnvironment environment)
           
 TypeVariableBinding[] typeVariables()
           
static TypeBinding wellKnownType(Scope scope, int id)
          Match a well-known type id to its binding
 
Methods inherited from class org.eclipse.jdt.internal.compiler.lookup.Binding
computeUniqueKey, computeUniqueKey, getAnnotationTagBits, initializeDeprecatedAnnotationTagBits, isValidBinding, problemId, readableName, shortReadableName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

id

public int id

tagBits

public long tagBits

INT

public static final BaseTypeBinding INT
Base type definitions


BYTE

public static final BaseTypeBinding BYTE

SHORT

public static final BaseTypeBinding SHORT

CHAR

public static final BaseTypeBinding CHAR

LONG

public static final BaseTypeBinding LONG

FLOAT

public static final BaseTypeBinding FLOAT

DOUBLE

public static final BaseTypeBinding DOUBLE

BOOLEAN

public static final BaseTypeBinding BOOLEAN

NULL

public static final BaseTypeBinding NULL

VOID

public static final BaseTypeBinding VOID
Constructor Detail

TypeBinding

public TypeBinding()
Method Detail

wellKnownType

public static final TypeBinding wellKnownType(Scope scope,
                                              int id)
Match a well-known type id to its binding


canBeInstantiated

public boolean canBeInstantiated()

capture

public TypeBinding capture(Scope scope,
                           int position)
Perform capture conversion on a given type (only effective on parameterized type with wildcards)


collectSubstitutes

public void collectSubstitutes(Scope scope,
                               TypeBinding actualType,
                               java.util.Map substitutes,
                               int constraint)
Collect the substitutes into a map for certain type variables inside the receiver type e.g. Collection.findSubstitute(T, Collection>): T --> List Constraints: A << F corresponds to: F.collectSubstitutes(..., A, ..., 1) A = F corresponds to: F.collectSubstitutes(..., A, ..., 0) A >> F corresponds to: F.collectSubstitutes(..., A, ..., 2)


constantPoolName

public abstract char[] constantPoolName()
Answer the receiver's constant pool name. NOTE: This method should only be used during/after code gen. e.g. 'java/lang/Object'


debugName

public java.lang.String debugName()

dimensions

public int dimensions()

enclosingType

public ReferenceBinding enclosingType()

erasure

public TypeBinding erasure()

findSuperTypeWithSameErasure

public TypeBinding findSuperTypeWithSameErasure(TypeBinding otherType)
Find supertype which erases to a given type, or null if not found


genericCast

public TypeBinding genericCast(TypeBinding otherType)
Returns the type to use for generic cast, or null if none required


genericTypeSignature

public char[] genericTypeSignature()
Answer the receiver classfile signature. Arrays & base types do not distinguish between signature() & constantPoolName(). NOTE: This method should only be used during/after code gen.


getPackage

public abstract PackageBinding getPackage()

isAnnotationType

public boolean isAnnotationType()

isAnonymousType

public final boolean isAnonymousType()

isArrayType

public final boolean isArrayType()

isBaseType

public final boolean isBaseType()

isBoundParameterizedType

public boolean isBoundParameterizedType()
Returns true if parameterized type AND not of the form List


isCapture

public boolean isCapture()
Returns true if the type is the capture of some wildcard


isClass

public boolean isClass()

isCompatibleWith

public abstract boolean isCompatibleWith(TypeBinding right)

isEnum

public boolean isEnum()

isEquivalentTo

public boolean isEquivalentTo(TypeBinding otherType)
Returns true if a type is identical to another one, or for generic types, true if compared to its raw type.


isGenericType

public boolean isGenericType()

isHierarchyInconsistent

public final boolean isHierarchyInconsistent()

isInterface

public boolean isInterface()

isIntersectingWith

public boolean isIntersectingWith(TypeBinding otherType)
Returns true if a type is intersecting with another one,


isIntersectionType

public boolean isIntersectionType()
Returns true if the current type denotes an intersection type: Number & Comparable


isLocalType

public final boolean isLocalType()

isMemberType

public final boolean isMemberType()

isNestedType

public final boolean isNestedType()

isNumericType

public final boolean isNumericType()

isParameterizedType

public boolean isParameterizedType()
Returns true if the type is parameterized, e.g. List


isParameterizedWithOwnVariables

public boolean isParameterizedWithOwnVariables()
Returns true if the type is parameterized using its own type variables as arguments


isProvablyDistinctFrom

public boolean isProvablyDistinctFrom(TypeBinding otherType,
                                      int depth)
Returns true if the two types are statically known to be different at compile-time, e.g. a type variable is not provably known to be distinct from another type


isRawType

public boolean isRawType()

isReifiable

public boolean isReifiable()
JLS(3) 4.7. Note: Foo.Bar is also reifiable


isTypeArgumentContainedBy

public boolean isTypeArgumentContainedBy(TypeBinding otherType)

isTypeArgumentIntersecting

public boolean isTypeArgumentIntersecting(TypeBinding otherArgument)
Returns false if two given types could not intersect as argument types: List & List --> false List & List --> true List & List --> false


isTypeVariable

public boolean isTypeVariable()
Returns true if the type was declared as a type variable


isUnboundWildcard

public boolean isUnboundWildcard()
Returns true if wildcard type of the form '?' (no bound)


isUncheckedException

public boolean isUncheckedException(boolean includeSupertype)
Returns true if the type is a subclass of java.lang.Error or java.lang.RuntimeException


isWildcard

public boolean isWildcard()
Returns true if the type is a wildcard


kind

public int kind()
Specified by:
kind in class Binding

leafComponentType

public TypeBinding leafComponentType()

needsUncheckedConversion

public boolean needsUncheckedConversion(TypeBinding targetType)
Meant to be invoked on compatible types, to figure if unchecked conversion is necessary


qualifiedPackageName

public char[] qualifiedPackageName()
Answer the qualified name of the receiver's package separated by periods or an empty string if its the default package. For example, {java.util.Hashtable}.


qualifiedSourceName

public abstract char[] qualifiedSourceName()
Answer the source name for the type. In the case of member types, as the qualified name from its top level type. For example, for a member type N defined inside M & A: "A.M.N".


signature

public char[] signature()
Answer the receiver classfile signature. Arrays & base types do not distinguish between signature() & constantPoolName(). NOTE: This method should only be used during/after code gen.


sourceName

public abstract char[] sourceName()

swapUnresolved

public void swapUnresolved(UnresolvedReferenceBinding unresolvedType,
                           ReferenceBinding resolvedType,
                           LookupEnvironment environment)

typeVariables

public TypeVariableBinding[] typeVariables()