Class Type

java.lang.Object
org.apache.bcel.generic.Type
Direct Known Subclasses:
BasicType, DOUBLE_Upper, LONG_Upper, ReferenceType, ReturnaddressType

public abstract class Type extends Object
Abstract super class for all possible Java types, namely basic types such as int, object types like String and array types, e.g. int[]
  • Field Details

    • VOID

      public static final BasicType VOID
      Predefined constants
    • BOOLEAN

      public static final BasicType BOOLEAN
    • INT

      public static final BasicType INT
    • SHORT

      public static final BasicType SHORT
    • BYTE

      public static final BasicType BYTE
    • LONG

      public static final BasicType LONG
    • DOUBLE

      public static final BasicType DOUBLE
    • FLOAT

      public static final BasicType FLOAT
    • CHAR

      public static final BasicType CHAR
    • OBJECT

      public static final ObjectType OBJECT
    • CLASS

      public static final ObjectType CLASS
    • STRING

      public static final ObjectType STRING
    • STRINGBUFFER

      public static final ObjectType STRINGBUFFER
    • THROWABLE

      public static final ObjectType THROWABLE
    • NO_ARGS

      public static final Type[] NO_ARGS
      Empty array.
    • NULL

      public static final ReferenceType NULL
    • UNKNOWN

      public static final Type UNKNOWN
    • CONSUMED_CHARS

      private static final ThreadLocal<Integer> CONSUMED_CHARS
    • type

      @Deprecated protected byte type
      Deprecated.
      (since 6.0) will be made private; do not access directly, use getter/setter
    • signature

      @Deprecated protected String signature
      Deprecated.
      (since 6.0) will be made private; do not access directly, use getter/setter
  • Constructor Details

    • Type

      protected Type(byte type, String signature)
  • Method Details

    • consumed

      static int consumed(int coded)
    • encode

      static int encode(int size, int consumed)
    • getArgumentTypes

      public static Type[] getArgumentTypes(String signature)
      Convert arguments of a method (signature) to an array of Type objects.
      Parameters:
      signature - signature string such as (Ljava/lang/String;)V
      Returns:
      array of argument types
    • getArgumentTypesSize

      static int getArgumentTypesSize(String signature)
    • getMethodSignature

      public static String getMethodSignature(Type returnType, Type[] argTypes)
      Convert type to Java method signature, e.g. int[] f(java.lang.String x) becomes (Ljava/lang/String;)[I
      Parameters:
      returnType - what the method returns
      argTypes - what are the argument types
      Returns:
      method signature for given type(s).
    • getReturnType

      public static Type getReturnType(String signature)
      Convert return value of a method (signature) to a Type object.
      Parameters:
      signature - signature string such as (Ljava/lang/String;)V
      Returns:
      return type
    • getReturnTypeSize

      static int getReturnTypeSize(String signature)
    • getSignature

      public static String getSignature(Method meth)
    • getType

      public static Type getType(Class<?> cls)
      Convert runtime Class to BCEL Type object.
      Parameters:
      cls - Java class
      Returns:
      corresponding Type object
    • getType

      public static Type getType(String signature) throws StringIndexOutOfBoundsException
      Convert signature to a Type object.
      Parameters:
      signature - signature string such as Ljava/lang/String;
      Returns:
      type object
      Throws:
      StringIndexOutOfBoundsException
    • getTypes

      public static Type[] getTypes(Class<?>[] classes)
      Convert runtime java.lang.Class[] to BCEL Type objects.
      Parameters:
      classes - an array of runtime class objects
      Returns:
      array of corresponding Type objects
    • getTypeSize

      static int getTypeSize(String signature) throws StringIndexOutOfBoundsException
      Throws:
      StringIndexOutOfBoundsException
    • internalTypeNameToSignature

      static String internalTypeNameToSignature(String internalTypeName)
    • size

      static int size(int coded)
    • unwrap

      private static int unwrap(ThreadLocal<Integer> tl)
    • wrap

      private static void wrap(ThreadLocal<Integer> tl, int value)
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
      Returns:
      whether the Types are equal
    • getClassName

      public String getClassName()
    • getSignature

      public String getSignature()
      Returns:
      signature for given type.
    • getSize

      public int getSize()
      Returns:
      stack size of this type (2 for long and double, 0 for void, 1 otherwise)
    • getType

      public byte getType()
      Returns:
      type as defined in Constants
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
      Returns:
      hash code of Type
    • normalizeForStackOrLocal

      public Type normalizeForStackOrLocal()
      boolean, short and char variable are considered as int in the stack or local variable area. Returns INT for BOOLEAN, SHORT or CHAR, otherwise returns the given type.
      Since:
      6.0
    • toString

      public String toString()
      Overrides:
      toString in class Object
      Returns:
      Type string, e.g. 'int[]'