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, for example 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, for example 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()
      Gets the class name.
      Returns:
      the class name.
    • getSignature

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

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

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

      public int hashCode()
      Gets the hash code of this Type.
      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.
      Returns:
      the normalized type.
      Since:
      6.0
    • toString

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