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()
    • 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, for example 'int[]'