Class BindingKey

java.lang.Object
org.eclipse.jdt.core.BindingKey

public final class BindingKey extends Object
Utility class to decode or create a binding key.

This class is not intended to be subclassed by clients.

Since:
3.1
See Also:
  • Constructor Details

    • BindingKey

      public BindingKey(String key)
      Creates a new binding key.
      Parameters:
      key - the key to decode
  • Method Details

    • createArrayTypeBindingKey

      public static String createArrayTypeBindingKey(String typeKey, int arrayDimension)
      Creates a new array type binding key from the given type binding key and the given array dimension.

      For example:

       
       createArrayTypeBindingKey("Ljava/lang/Object;", 1) -> "[Ljava/lang/Object;"
       createArrayTypeBindingKey("I", 2) -> "[[I"
       
       
      Parameters:
      typeKey - the binding key of the given type
      arrayDimension - the given array dimension
      Returns:
      a new array type binding key
    • createParameterizedTypeBindingKey

      public static String createParameterizedTypeBindingKey(String genericTypeKey, String[] argumentTypeKeys)
      Creates a new parameterized type binding key from the given generic type binding key and the given argument type binding keys. If the argument type keys array is empty, then a raw type binding key is created.

      For example:

       
       createParameterizedTypeBindingKey(
           "Ljava/util/Map<TK;TV;>;",
           new String[] {"Ljava/lang/String;", "Ljava/lang/Object;"}) ->
             "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;"
       createParameterizedTypeBindingKey(
           "Ljava/util/List<TE;>;", new String[] {}) ->
             "Ljava/util/List<>;"
       
       
      Parameters:
      genericTypeKey - the binding key of the generic type
      argumentTypeKeys - the possibly empty list of binding keys of argument types
      Returns:
      a new parameterized type binding key
    • createTypeBindingKey

      public static String createTypeBindingKey(String typeName)
      Creates a new type binding key from the given type name. The type name must be either a fully qualified name, an array type name or a primitive type name. If the type name is fully qualified, then it is expected to be dot-based. Note that inner types, generic types and parameterized types are not supported.

      For example:

       
       createTypeBindingKey("int") -> "I"
       createTypeBindingKey("java.lang.String") -> "Ljava/lang/String;"
       createTypeBindingKey("boolean[]") -> "[Z"
       
       
      Parameters:
      typeName - the possibly qualified type name
      Returns:
      a new type binding key
    • createTypeVariableBindingKey

      public static String createTypeVariableBindingKey(String typeVariableName, String declaringKey)
      Creates a new type variable binding key from the given type variable name and the given declaring key. The declaring key can either be a type binding key or a method binding key.

      For example:

       
       createTypeVariableBindingKey("T", "Ljava/util/List<TE;>;") ->
         "Ljava/util/List<TE;>;:TT;"
       createTypeVariableBindingKey("SomeTypeVariable", "Lp/X;.foo()V") ->
         "Lp/X;.foo()V:TSomeTypeVariable;"
       
       
      Parameters:
      typeVariableName - the name of the given type variable
      declaringKey - the binding key of the type or method the type variable belongs to
      Returns:
      a new type variable binding key
    • createWilcardTypeBindingKey

      public static String createWilcardTypeBindingKey(String typeKey, char kind)
      Deprecated.
      This method is missing crucial information necessary for proper wildcard binding key creation.
      Creates a new wildcard type binding key from the given type binding key and the given wildcard kind (one of Signature.C_STAR, Signature.C_SUPER, or Signature.C_EXTENDS. If the wildcard is Signature.C_STAR, the given type binding key is ignored.

      For example:

       
       createWilcardTypeBindingKey(null, Signature.C_STAR) -> "*"
       createWilcardTypeBindingKey("Ljava/util/List<TE;>;",
          Signature.C_SUPER) -> "-Ljava/util/List<TE;>;"
       createWilcardTypeBindingKey("Ljava/util/ArrayList;", Signature.C_EXTENDS) ->
          "+Ljava/util/ArrayList;"
       
       
      Parameters:
      typeKey - the binding key of the given type
      kind - one of Signature.C_STAR, Signature.C_SUPER, or Signature.C_EXTENDS
      Returns:
      a new wildcard type binding key
      See Also:
    • createWildcardTypeBindingKey

      public static String createWildcardTypeBindingKey(String genericTypeKey, char boundKind, String boundTypeKey, int rank)
      Creates a new wildcard type binding key from the given generic type binding key, the given wildcard kind (one of Signature.C_STAR, Signature.C_SUPER, or Signature.C_EXTENDS the given bound type binding key and the given rank. If the wildcard kind is Signature.C_STAR, the given bound type binding key is ignored.

      For example:

       
       createWildcardTypeBindingKey("Ljava/util/ArrayList;", Signature.C_STAR, null, 0) -> "Ljava/util/ArrayList;{0}*"
       createWildcardTypeBindingKey("Ljava/util/ArrayList;", Signature.C_SUPER, "Ljava/lang/String;", 0) -> "Ljava/util/ArrayList;{0}-Ljava/lang/String;"
       createWildcardTypeBindingKey("Ljava/util/HashMap;", Signature.C_EXTENDS, "Ljava/lang/String;", 1) ->
          "Ljava/util/HashMap;{1}+Ljava/lang/String;"
       
       
      Parameters:
      genericTypeKey - the binding key of the generic type
      boundKind - one of Signature.C_STAR, Signature.C_SUPER, or Signature.C_EXTENDS
      boundTypeKey - the binding key of the bounding type.
      rank - the relative position of this wild card type in the parameterization of the generic type.
      Returns:
      a new wildcard type binding key
      Since:
      3.5
    • getDeclaringType

      public BindingKey getDeclaringType()
      Returns the binding key of the declaring type of the element represented by this binding key. If the binding key does not represent a member or if the member doesn't have a declaring type, returns null.

      Note that only binding keys for references to methods and fields are fully supported. The binding keys for declarations will not have type parameters.

      Returns:
      the type binding key or null
      Since:
      3.7.1
    • getThrownExceptions

      public String[] getThrownExceptions()
      Returns the thrown exception signatures of the element represented by this binding key. If this binding key does not represent a method or does not throw any exception, returns an empty array.
      Returns:
      the thrown exceptions signatures
      Since:
      3.3
    • getTypeArguments

      public String[] getTypeArguments()
      Returns the type argument signatures of the element represented by this binding key. If this binding key doesn't represent a parameterized type or a parameterized method, returns an empty array.
      Returns:
      the type argument signatures
    • isRawType

      public boolean isRawType()
      Returns whether this binding key represents a raw type.
      Returns:
      whether this binding key represents a raw type
    • isParameterizedType

      public boolean isParameterizedType()
      Returns whether this binding key represents a parameterized type, or if its declaring type is a parameterized type.
      Returns:
      whether this binding key represents a parameterized type
    • isParameterizedMethod

      public boolean isParameterizedMethod()
      Returns whether this binding key represents a parameterized method, or if its declaring method is a parameterized method.
      Returns:
      whether this binding key represents a parameterized method
    • toSignature

      public String toSignature()
      Transforms this binding key into a resolved signature. If this binding key represents a field, the returned signature is the field type's signature.
      Returns:
      the resolved signature for this binding key
      Since:
      3.2
      See Also:
    • toString

      public String toString()
      Overrides:
      toString in class Object