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

  • Constructor Details

    • Type

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

    • 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
    • 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
    • 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
    • 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

      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[]'