Class Type

java.lang.Object
org.objectweb.asm.Type

public class Type extends Object
A Java type. This class can be used to make it easier to manipulate type and method descriptors.
Author:
Eric Bruneton, Chris Nokleberg
  • Field Details

    • VOID

      public static final int VOID
      The sort of the void type. See getSort.
      See Also:
    • BOOLEAN

      public static final int BOOLEAN
      The sort of the boolean type. See getSort.
      See Also:
    • CHAR

      public static final int CHAR
      The sort of the char type. See getSort.
      See Also:
    • BYTE

      public static final int BYTE
      The sort of the byte type. See getSort.
      See Also:
    • SHORT

      public static final int SHORT
      The sort of the short type. See getSort.
      See Also:
    • INT

      public static final int INT
      The sort of the int type. See getSort.
      See Also:
    • FLOAT

      public static final int FLOAT
      The sort of the float type. See getSort.
      See Also:
    • LONG

      public static final int LONG
      The sort of the long type. See getSort.
      See Also:
    • DOUBLE

      public static final int DOUBLE
      The sort of the double type. See getSort.
      See Also:
    • ARRAY

      public static final int ARRAY
      The sort of array reference types. See getSort.
      See Also:
    • OBJECT

      public static final int OBJECT
      The sort of object reference type. See getSort.
      See Also:
    • VOID_TYPE

      public static final Type VOID_TYPE
      The void type.
    • BOOLEAN_TYPE

      public static final Type BOOLEAN_TYPE
      The boolean type.
    • CHAR_TYPE

      public static final Type CHAR_TYPE
      The char type.
    • BYTE_TYPE

      public static final Type BYTE_TYPE
      The byte type.
    • SHORT_TYPE

      public static final Type SHORT_TYPE
      The short type.
    • INT_TYPE

      public static final Type INT_TYPE
      The int type.
    • FLOAT_TYPE

      public static final Type FLOAT_TYPE
      The float type.
    • LONG_TYPE

      public static final Type LONG_TYPE
      The long type.
    • DOUBLE_TYPE

      public static final Type DOUBLE_TYPE
      The double type.
  • Method Details

    • getType

      public static Type getType(String typeDescriptor)
      Returns the Java type corresponding to the given type descriptor.
      Parameters:
      typeDescriptor - a type descriptor.
      Returns:
      the Java type corresponding to the given type descriptor.
    • getObjectType

      public static Type getObjectType(String internalName)
      Returns the Java type corresponding to the given internal name.
      Parameters:
      internalName - an internal name.
      Returns:
      the Java type corresponding to the given internal name.
    • getType

      public static Type getType(Class c)
      Returns the Java type corresponding to the given class.
      Parameters:
      c - a class.
      Returns:
      the Java type corresponding to the given class.
    • getArgumentTypes

      public static Type[] getArgumentTypes(String methodDescriptor)
      Returns the Java types corresponding to the argument types of the given method descriptor.
      Parameters:
      methodDescriptor - a method descriptor.
      Returns:
      the Java types corresponding to the argument types of the given method descriptor.
    • getArgumentTypes

      public static Type[] getArgumentTypes(Method method)
      Returns the Java types corresponding to the argument types of the given method.
      Parameters:
      method - a method.
      Returns:
      the Java types corresponding to the argument types of the given method.
    • getReturnType

      public static Type getReturnType(String methodDescriptor)
      Returns the Java type corresponding to the return type of the given method descriptor.
      Parameters:
      methodDescriptor - a method descriptor.
      Returns:
      the Java type corresponding to the return type of the given method descriptor.
    • getReturnType

      public static Type getReturnType(Method method)
      Returns the Java type corresponding to the return type of the given method.
      Parameters:
      method - a method.
      Returns:
      the Java type corresponding to the return type of the given method.
    • getArgumentsAndReturnSizes

      public static int getArgumentsAndReturnSizes(String desc)
      Computes the size of the arguments and of the return value of a method.
      Parameters:
      desc - the descriptor of a method.
      Returns:
      the size of the arguments of the method (plus one for the implicit this argument), argSize, and the size of its return value, retSize, packed into a single int i = (argSize invalid input: '<'invalid input: '<' 2) | retSize (argSize is therefore equal to i >> 2, and retSize to i invalid input: '&' 0x03).
    • getSort

      public int getSort()
      Returns the sort of this Java type.
      Returns:
      VOID, BOOLEAN, CHAR, BYTE, SHORT, INT, FLOAT, LONG, DOUBLE, ARRAY or OBJECT.
    • getDimensions

      public int getDimensions()
      Returns the number of dimensions of this array type. This method should only be used for an array type.
      Returns:
      the number of dimensions of this array type.
    • getElementType

      public Type getElementType()
      Returns the type of the elements of this array type. This method should only be used for an array type.
      Returns:
      Returns the type of the elements of this array type.
    • getClassName

      public String getClassName()
      Returns the binary name of the class corresponding to this type.
      Returns:
      the binary name of the class corresponding to this type.
    • getInternalName

      public String getInternalName()
      Returns the internal name of the class corresponding to this object or array type. The internal name of a class is its fully qualified name (as returned by Class.getName(), where '.' are replaced by '/'. This method should only be used for an object or array type.
      Returns:
      the internal name of the class corresponding to this object type.
    • getDescriptor

      public String getDescriptor()
      Returns the descriptor corresponding to this Java type.
      Returns:
      the descriptor corresponding to this Java type.
    • getMethodDescriptor

      public static String getMethodDescriptor(Type returnType, Type[] argumentTypes)
      Returns the descriptor corresponding to the given argument and return types.
      Parameters:
      returnType - the return type of the method.
      argumentTypes - the argument types of the method.
      Returns:
      the descriptor corresponding to the given argument and return types.
    • getInternalName

      public static String getInternalName(Class c)
      Returns the internal name of the given class. The internal name of a class is its fully qualified name, as returned by Class.getName(), where '.' are replaced by '/'.
      Parameters:
      c - an object or array class.
      Returns:
      the internal name of the given class.
    • getDescriptor

      public static String getDescriptor(Class c)
      Returns the descriptor corresponding to the given Java type.
      Parameters:
      c - an object class, a primitive class or an array class.
      Returns:
      the descriptor corresponding to the given class.
    • getConstructorDescriptor

      public static String getConstructorDescriptor(Constructor c)
      Returns the descriptor corresponding to the given constructor.
      Parameters:
      c - a Constructor object.
      Returns:
      the descriptor of the given constructor.
    • getMethodDescriptor

      public static String getMethodDescriptor(Method m)
      Returns the descriptor corresponding to the given method.
      Parameters:
      m - a Method object.
      Returns:
      the descriptor of the given method.
    • getSize

      public int getSize()
      Returns the size of values of this type.
      Returns:
      the size of values of this type, i.e., 2 for long and double, 0 for void and 1 otherwise.
    • getOpcode

      public int getOpcode(int opcode)
      Returns a JVM instruction opcode adapted to this Java type.
      Parameters:
      opcode - a JVM instruction opcode. This opcode must be one of ILOAD, ISTORE, IALOAD, IASTORE, IADD, ISUB, IMUL, IDIV, IREM, INEG, ISHL, ISHR, IUSHR, IAND, IOR, IXOR and IRETURN.
      Returns:
      an opcode that is similar to the given opcode, but adapted to this Java type. For example, if this type is float and opcode is IRETURN, this method returns FRETURN.
    • equals

      public boolean equals(Object o)
      Tests if the given object is equal to this type.
      Overrides:
      equals in class Object
      Parameters:
      o - the object to be compared to this type.
      Returns:
      true if the given object is equal to this type.
    • hashCode

      public int hashCode()
      Returns a hash code value for this type.
      Overrides:
      hashCode in class Object
      Returns:
      a hash code value for this type.
    • toString

      public String toString()
      Returns a string representation of this type.
      Overrides:
      toString in class Object
      Returns:
      the descriptor of this type.