Class Type

java.lang.Object
org.springframework.asm.Type

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

  • Method Details

    • getType

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

      public static Type getType(Class<?> clazz)
      Returns the Type corresponding to the given class.
      Parameters:
      clazz - a class.
      Returns:
      the Type corresponding to the given class.
    • getType

      public static Type getType(Constructor<?> constructor)
      Returns the method Type corresponding to the given constructor.
      Parameters:
      constructor - a Constructor object.
      Returns:
      the method Type corresponding to the given constructor.
    • getType

      public static Type getType(Method method)
      Returns the method Type corresponding to the given method.
      Parameters:
      method - a Method object.
      Returns:
      the method Type corresponding to the given method.
    • 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.
    • getObjectType

      public static Type getObjectType(String internalName)
      Returns the Type corresponding to the given internal name.
      Parameters:
      internalName - an internal name (see getInternalName()).
      Returns:
      the Type corresponding to the given internal name.
    • getMethodType

      public static Type getMethodType(String methodDescriptor)
      Returns the Type corresponding to the given method descriptor. Equivalent to Type.getType(methodDescriptor).
      Parameters:
      methodDescriptor - a method descriptor.
      Returns:
      the Type corresponding to the given method descriptor.
    • getMethodType

      public static Type getMethodType(Type returnType, Type... argumentTypes)
      Returns the method Type 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 method Type corresponding to the given argument and return types.
    • getArgumentTypes

      public Type[] getArgumentTypes()
      Returns the argument types of methods of this type. This method should only be used for method types.
      Returns:
      the argument types of methods of this type.
    • getArgumentTypes

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

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

      public Type getReturnType()
      Returns the return type of methods of this type. This method should only be used for method types.
      Returns:
      the return type of methods of this type.
    • getReturnType

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

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

      public String getClassName()
      Returns the binary name of the class corresponding to this type. This method must not be used on method types.
      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.
    • getInternalName

      public static String getInternalName(Class<?> clazz)
      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:
      clazz - an object or array class.
      Returns:
      the internal name of the given class.
    • getDescriptor

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

      public static String getDescriptor(Class<?> clazz)
      Returns the descriptor corresponding to the given class.
      Parameters:
      clazz - an object class, a primitive class or an array class.
      Returns:
      the descriptor corresponding to the given class.
    • getConstructorDescriptor

      public static String getConstructorDescriptor(Constructor<?> constructor)
      Returns the descriptor corresponding to the given constructor.
      Parameters:
      constructor - a Constructor object.
      Returns:
      the descriptor of the given constructor.
    • 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.
    • getMethodDescriptor

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

      public int getSort()
      Returns the sort of this type.
      Returns:
      VOID, BOOLEAN, CHAR, BYTE, SHORT, INT, FLOAT, LONG, DOUBLE, ARRAY, OBJECT or METHOD.
    • 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.
    • getSize

      public int getSize()
      Returns the size of values of this type. This method must not be used for method types.
      Returns:
      the size of values of this type, i.e., 2 for long and double, 0 for void and 1 otherwise.
    • getArgumentCount

      public int getArgumentCount()
      Returns the number of arguments of this method type. This method should only be used for method types.
      Returns:
      the number of arguments of this method type. Each argument counts for 1, even long and double ones. The implicit @literal{this} argument is not counted.
    • getArgumentCount

      public static int getArgumentCount(String methodDescriptor)
      Returns the number of arguments in the given method descriptor.
      Parameters:
      methodDescriptor - a method descriptor.
      Returns:
      the number of arguments in the given method descriptor. Each argument counts for 1, even long and double ones. The implicit @literal{this} argument is not counted.
    • getArgumentsAndReturnSizes

      public int getArgumentsAndReturnSizes()
      Returns the size of the arguments and of the return value of methods of this type. This method should only be used for method types.
      Returns:
      the size of the arguments of the method (plus one for the implicit this argument), argumentsSize, and the size of its return value, returnSize, packed into a single int i = (argumentsSize &lt;&lt; 2) | returnSize (argumentsSize is therefore equal to i &gt;&gt; 2, and returnSize to i &amp; 0x03). Long and double values have size 2, the others have size 1.
    • getArgumentsAndReturnSizes

      public static int getArgumentsAndReturnSizes(String methodDescriptor)
      Computes the size of the arguments and of the return value of a method.
      Parameters:
      methodDescriptor - a method descriptor.
      Returns:
      the size of the arguments of the method (plus one for the implicit this argument), argumentsSize, and the size of its return value, returnSize, packed into a single int i = (argumentsSize &lt;&lt; 2) | returnSize (argumentsSize is therefore equal to i &gt;&gt; 2, and returnSize to i &amp; 0x03). Long and double values have size 2, the others have size 1.
    • getOpcode

      public int getOpcode(int opcode)
      Returns a JVM instruction opcode adapted to this Type. This method must not be used for method types.
      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 Type. For example, if this type is float and opcode is IRETURN, this method returns FRETURN.
    • equals

      public boolean equals(Object object)
      Tests if the given object is equal to this type.
      Overrides:
      equals in class Object
      Parameters:
      object - 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.