java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding
Bekannte direkte Unterklassen:
ArrayBinding, BaseTypeBinding, PolyTypeBinding, ReferenceBinding

public abstract class TypeBinding extends Binding
  • Felddetails

  • Konstruktordetails

    • TypeBinding

      public TypeBinding()
    • TypeBinding

      public TypeBinding(TypeBinding prototype)
  • Methodendetails

    • wellKnownType

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

      public static final TypeBinding wellKnownBaseType(int id)
    • actualType

      public ReferenceBinding actualType()
    • annotatedDebugName

      public String annotatedDebugName()
    • containerAnnotationType

      public ReferenceBinding containerAnnotationType()
    • canBeInstantiated

      public boolean canBeInstantiated()
    • capture

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

      public TypeBinding uncapture(Scope scope)
      Perform capture "deconversion" on a given type
    • closestMatch

      public TypeBinding closestMatch()
      In case of problems, returns the closest match found. It may not be perfect match, but the result of a best effort to improve fault-tolerance.
    • collectMissingTypes

      public List<TypeBinding> collectMissingTypes(List<TypeBinding> missingTypes)
      Iterate through the type components to collect instances of leaf missing types
      Parameter:
      missingTypes -
      Gibt zurück:
      missing types
    • collectSubstitutes

      public void collectSubstitutes(Scope scope, TypeBinding actualType, InferenceContext inferenceContext, int constraint)
      Collect the substitutes into a map for certain type variables inside the receiver type e.g. Collection.findSubstitute(T, CollectionUngültige Eingabe: "<"List>): T --> List Constraints: A Ungültige Eingabe: "<"Ungültige Eingabe: "<" F corresponds to: F.collectSubstitutes(..., A, ..., CONSTRAINT_EXTENDS (1)) A = F corresponds to: F.collectSubstitutes(..., A, ..., CONSTRAINT_EQUAL (0)) A >> F corresponds to: F.collectSubstitutes(..., A, ..., CONSTRAINT_SUPER (2))
    • clone

      public TypeBinding clone(TypeBinding enclosingType)
      Virtual copy constructor: a copy is made of the receiver's entire instance state and then suitably parameterized by the arguments to the clone operation as seen fit by each type. Parameters may not make sense for every type in the hierarchy, in which case they are silently ignored. A type may choose to retain a copy of the prototype for reference.
    • 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 String debugName()
    • dimensions

      public int dimensions()
    • depth

      public int depth()
    • enclosingMethod

      public MethodBinding enclosingMethod()
    • enclosingType

      public ReferenceBinding enclosingType()
    • erasure

      public TypeBinding erasure()
    • upwardsProjection

      public TypeBinding upwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables)
      Perform an upwards type projection as per JLS 4.10.5
      Parameter:
      scope - Relevant scope for evaluating type projection
      mentionedTypeVariables - Filter for mentioned type variabled
    • downwardsProjection

      public TypeBinding downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables)
      Perform a downwards type projection as per JLS 4.10.5
      Parameter:
      scope - Relevant scope for evaluating type projection
      mentionedTypeVariables - Filter for mentioned type variabled
    • findSuperTypeOriginatingFrom

      public ReferenceBinding findSuperTypeOriginatingFrom(int wellKnownOriginalID, boolean originalIsClass)
      Find supertype which originates from a given well-known type, or null if not found (using id avoids triggering the load of well-known type: 73740) NOTE: only works for erasures of well-known types, as random other types may share same id though being distincts.
      Siehe auch:
    • findSuperTypeOriginatingFrom

      public TypeBinding findSuperTypeOriginatingFrom(TypeBinding otherType)
      Find supertype which originates from a given type, or null if not found
    • genericCast

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

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

      public TypeBinding getErasureCompatibleType(TypeBinding declaringClass)
      Return the supertype which would erase as a subtype of a given declaring class. If the receiver is already erasure compatible, then it will returned. If not, then will return the alternate lowest upper bound compatible with declaring class. NOTE: the declaringClass is already know to be compatible with the receiver
      Parameter:
      declaringClass - to look for
      Gibt zurück:
      the lowest erasure compatible type (considering alternate bounds)
    • getPackage

      public abstract PackageBinding getPackage()
    • isAnonymousType

      public final boolean isAnonymousType()
    • isArrayType

      public final boolean isArrayType()
    • isBaseType

      public final boolean isBaseType()
    • isPrimitiveType

      public final boolean isPrimitiveType()
    • isPrimitiveOrBoxedPrimitiveType

      public final boolean isPrimitiveOrBoxedPrimitiveType()
    • isBoxedPrimitiveType

      public boolean isBoxedPrimitiveType()
    • isBoundParameterizedType

      public boolean isBoundParameterizedType()
      Returns true if parameterized type AND not of the form ListUngültige Eingabe: "<"?>
    • isCapture

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

      public boolean isClass()
    • isRecord

      public boolean isRecord()
    • isCompatibleWith

      public boolean isCompatibleWith(TypeBinding right)
    • isCompatibleWith

      public abstract boolean isCompatibleWith(TypeBinding right, Scope scope)
    • isPotentiallyCompatibleWith

      public boolean isPotentiallyCompatibleWith(TypeBinding right, Scope scope)
    • isBoxingCompatibleWith

      public boolean isBoxingCompatibleWith(TypeBinding right, Scope scope)
    • 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()
    • isFunctionalInterface

      public boolean isFunctionalInterface(Scope scope)
    • isIntersectionType

      public boolean isIntersectionType()
      Returns true if the current type denotes an intersection type: Number Ungültige Eingabe: "&" ComparableUngültige Eingabe: "<"?>
    • 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. Note that some instances of ParameterizedTypeBinding have no arguments, like for non-generic members of a parameterized type. Use isParameterizedTypeWithActualArguments() instead to find out.
    • hasNullTypeAnnotations

      public boolean hasNullTypeAnnotations()
      Does this type or any of its details (array dimensions, type arguments) have a null type annotation?
    • acceptsNonNullDefault

      public boolean acceptsNonNullDefault()
      Used to implement this sentence from o.e.j.annotation.DefaultLocation: "Wildcards and the use of type variables are always excluded from NonNullByDefault."
    • isIntersectionType18

      public boolean isIntersectionType18()
    • isParameterizedTypeWithActualArguments

      public final boolean isParameterizedTypeWithActualArguments()
      Returns true if the type is parameterized, e.g. List Note that some instances of ParameterizedTypeBinding do answer false to isParameterizedType() in case they have no arguments, like for non-generic members of a parameterized type. i.e. isParameterizedType() is not equivalent to testing type.kind() == Binding.PARAMETERIZED_TYPE
    • isParameterizedWithOwnVariables

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

      public boolean isProperType(boolean admitCapture18)
      JLS8 Sect 18.1.1
      Parameter:
      admitCapture18 - request if CaptureBinding18 shuld be considered as a proper type. If unsure say 'true', only in Scope.greaterLowerBound(TypeBinding[], Scope, LookupEnvironment) CaptureBinding18 has to be excluded to prevent an NPE on a branch that heuristically tries to avoid inconsistent intersections.
    • isPolyType

      public boolean isPolyType()
    • isProvablyDistinct

      public boolean isProvablyDistinct(TypeBinding otherType)
      Returns true if a type is provably distinct from another one,
    • isReadyForAnnotations

      public boolean isReadyForAnnotations()
    • isRepeatableAnnotationType

      public boolean isRepeatableAnnotationType()
      Answer true if the receiver is an annotation which may be repeatable. Overridden as appropriate.
    • isRawType

      public final boolean isRawType()
    • isReifiable

      public boolean isReifiable()
      JLS(3) 4.7. Note: FooUngültige Eingabe: "<"?>.Bar is also reifiable
    • isStatic

      public boolean isStatic()
      Answer true if the receiver is a static member type (or toplevel)
    • isThrowable

      public boolean isThrowable()
      Returns true if a given type may be thrown
    • isTypeArgumentContainedBy

      public boolean isTypeArgumentContainedBy(TypeBinding otherType)
    • 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()
      Angegeben von:
      kind in Klasse 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
    • nullAnnotatedReadableName

      public char[] nullAnnotatedReadableName(CompilerOptions options, boolean shortNames)
      Answer a readable name (for error reporting) that includes nullness type annotations.
    • original

      public TypeBinding original()
      Returns the orignal generic type instantiated by the receiver type, or itself if not. This is similar to erasure process, except it doesn't erase type variable, wildcard, intersection types etc...
    • unannotated

      public TypeBinding unannotated()
      Return this type minus its type annotations
    • withoutToplevelNullAnnotation

      public TypeBinding withoutToplevelNullAnnotation()
      Return this type minus its toplevel null annotations. Any annotations on type arguments or bounds are retained.
    • hasTypeAnnotations

      public final boolean hasTypeAnnotations()
    • hasValueBasedTypeAnnotation

      public boolean hasValueBasedTypeAnnotation()
    • 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}.
    • 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 Ungültige Eingabe: "&" A: "A.M.N".
    • getTypeAnnotations

      public final AnnotationBinding[] getTypeAnnotations()
      Gibt zurück:
      the JSR 308 annotations for this type.
    • setTypeAnnotations

      public void setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations)
    • signableName

      public char[] signableName()
    • signature

      public char[] signature()
      Answer the receiver classfile signature. Arrays Ungültige Eingabe: "&" base types do not distinguish between signature() Ungültige Eingabe: "&" 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()
    • getSingleAbstractMethod

      public MethodBinding getSingleAbstractMethod(Scope scope, boolean replaceWildcards)
      Return the single abstract method of a functional interface, or one of null or ReferenceBinding.samProblemBinding, if the receiver is not a functional interface as defined in JLS 9.8. In particular null is answered if the receiver is not a reference type, or is a problem type.
      Parameter:
      scope - scope
      replaceWildcards - Should wildcards be replaced following JLS 9.8? Say false for lambdas with explicit argument types which should apply 18.5.3
      Gibt zurück:
      The single abstract method of a functional interface, or one of null or ReferenceBinding.samProblemBinding, if the receiver is not a functional interface.
    • getIntersectingTypes

      public ReferenceBinding[] getIntersectingTypes()
    • equalsEquals

      public static boolean equalsEquals(TypeBinding that, TypeBinding other)
    • notEquals

      public static boolean notEquals(TypeBinding that, TypeBinding other)
    • prototype

      public TypeBinding prototype()
      Return the primordial type from which the receiver was cloned. Not all types track a prototype, only SourceTypeBinding, BinaryTypeBinding and UnresolvedReferenceBinding do so as of now. In fact some types e.g ParameterizedTypeBinding should not do so. Deflecting a query to a prototype would lead to wrong results in the case of ParameterizedTypeBinding
    • isUnresolvedType

      public boolean isUnresolvedType()
    • mentionsAny

      public boolean mentionsAny(TypeBinding[] parameters, int idx)
      Does this type mention any of the given type parameters, except the one at position 'idx'?
    • hasTypeBit

      public boolean hasTypeBit(int bit)
      Answer an additional bit characterizing this type, like TypeIds.BitAutoCloseable.
    • sIsMoreSpecific

      public boolean sIsMoreSpecific(TypeBinding s, TypeBinding t, Scope scope)
    • isSubtypeOf

      public boolean isSubtypeOf(TypeBinding right, boolean simulatingBugJDK8026527)
    • getMethods

      public MethodBinding[] getMethods(char[] selector)
    • canBeSeenBy

      public boolean canBeSeenBy(Scope scope)
    • superclass

      public ReferenceBinding superclass()
    • permittedTypes

      public ReferenceBinding[] permittedTypes()
    • superInterfaces

      public ReferenceBinding[] superInterfaces()
    • components

      public RecordComponentBinding[] components()
    • syntheticOuterLocalVariables

      public SyntheticArgumentBinding[] syntheticOuterLocalVariables()
    • enterRecursiveFunction

      public boolean enterRecursiveFunction()
      Call this before descending into type details to prevent infinite recursion.
      Gibt zurück:
      true if a recursion was not already started.
    • exitRecursiveFunction

      public void exitRecursiveFunction()
      Exit the context of a potentially recursive function.
    • isFunctionalType

      public boolean isFunctionalType()
    • updateTagBits

      public long updateTagBits()
      Refresh some tagBits from details into the main type. Currently handled: TagBits.HasNullTypeAnnotation
    • isFreeTypeVariable

      public boolean isFreeTypeVariable()
    • isNonDenotable

      public boolean isNonDenotable()
      Does this type lack a class file representation on its own ?