Package org.springframework.asm

# 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 Summary

Fields
Modifier and Type
Field
Description
`static final int`
`ARRAY`
The sort of array reference types.
`static final int`
`BOOLEAN`
The sort of the `boolean` type.
`static final Type`
`BOOLEAN_TYPE`
The `boolean` type.
`static final int`
`BYTE`
The sort of the `byte` type.
`static final Type`
`BYTE_TYPE`
The `byte` type.
`static final int`
`CHAR`
The sort of the `char` type.
`static final Type`
`CHAR_TYPE`
The `char` type.
`static final int`
`DOUBLE`
The sort of the `double` type.
`static final Type`
`DOUBLE_TYPE`
The `double` type.
`static final int`
`FLOAT`
The sort of the `float` type.
`static final Type`
`FLOAT_TYPE`
The `float` type.
`static final int`
`INT`
The sort of the `int` type.
`static final Type`
`INT_TYPE`
The `int` type.
`static final int`
`LONG`
The sort of the `long` type.
`static final Type`
`LONG_TYPE`
The `long` type.
`static final int`
`METHOD`
The sort of method types.
`static final int`
`OBJECT`
The sort of object reference types.
`static final int`
`SHORT`
The sort of the `short` type.
`static final Type`
`SHORT_TYPE`
The `short` type.
`static final int`
`VOID`
The sort of the `void` type.
`static final Type`
`VOID_TYPE`
The `void` type.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`equals(Object object)`
Tests if the given object is equal to this type.
`int`
`getArgumentCount()`
Returns the number of arguments of this method type.
`static int`
`getArgumentCount(String methodDescriptor)`
Returns the number of arguments in the given method descriptor.
`int`
`getArgumentsAndReturnSizes()`
Returns the size of the arguments and of the return value of methods of this type.
`static int`
`getArgumentsAndReturnSizes(String methodDescriptor)`
Computes the size of the arguments and of the return value of a method.
`Type[]`
`getArgumentTypes()`
Returns the argument types of methods of this type.
`static Type[]`
`getArgumentTypes(Method method)`
Returns the `Type` values corresponding to the argument types of the given method.
`static Type[]`
`getArgumentTypes(String methodDescriptor)`
Returns the `Type` values corresponding to the argument types of the given method descriptor.
`String`
`getClassName()`
Returns the binary name of the class corresponding to this type.
`static String`
`getConstructorDescriptor(Constructor<?> constructor)`
Returns the descriptor corresponding to the given constructor.
`String`
`getDescriptor()`
Returns the descriptor corresponding to this type.
`static String`
`getDescriptor(Class<?> clazz)`
Returns the descriptor corresponding to the given class.
`int`
`getDimensions()`
Returns the number of dimensions of this array type.
`Type`
`getElementType()`
Returns the type of the elements of this array type.
`String`
`getInternalName()`
Returns the internal name of the class corresponding to this object or array type.
`static String`
`getInternalName(Class<?> clazz)`
Returns the internal name of the given class.
`static String`
`getMethodDescriptor(Method method)`
Returns the descriptor corresponding to the given method.
`static String`
`getMethodDescriptor(Type returnType, Type... argumentTypes)`
Returns the descriptor corresponding to the given argument and return types.
`static Type`
`getMethodType(String methodDescriptor)`
Returns the `Type` corresponding to the given method descriptor.
`static Type`
`getMethodType(Type returnType, Type... argumentTypes)`
Returns the method `Type` corresponding to the given argument and return types.
`static Type`
`getObjectType(String internalName)`
Returns the `Type` corresponding to the given internal name.
`int`
`getOpcode(int opcode)`
Returns a JVM instruction opcode adapted to this `Type`.
`Type`
`getReturnType()`
Returns the return type of methods of this type.
`static Type`
`getReturnType(Method method)`
Returns the `Type` corresponding to the return type of the given method.
`static Type`
`getReturnType(String methodDescriptor)`
Returns the `Type` corresponding to the return type of the given method descriptor.
`int`
`getSize()`
Returns the size of values of this type.
`int`
`getSort()`
Returns the sort of this type.
`static Type`
`getType(Class<?> clazz)`
Returns the `Type` corresponding to the given class.
`static Type`
`getType(Constructor<?> constructor)`
Returns the method `Type` corresponding to the given constructor.
`static Type`
`getType(Method method)`
Returns the method `Type` corresponding to the given method.
`static Type`
`getType(String typeDescriptor)`
Returns the `Type` corresponding to the given type descriptor.
`int`
`hashCode()`
Returns a hash code value for this type.
`String`
`toString()`
Returns a string representation of this type.

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Field Details

### VOID

public static final int VOID
The sort of the `void` type. See `getSort()`.

See Also:
  - Constant Field Values

### BOOLEAN

public static final int BOOLEAN
The sort of the `boolean` type. See `getSort()`.

See Also:
  - Constant Field Values

### CHAR

public static final int CHAR
The sort of the `char` type. See `getSort()`.

See Also:
  - Constant Field Values

### BYTE

public static final int BYTE
The sort of the `byte` type. See `getSort()`.

See Also:
  - Constant Field Values

### SHORT

public static final int SHORT
The sort of the `short` type. See `getSort()`.

See Also:
  - Constant Field Values

### INT

public static final int INT
The sort of the `int` type. See `getSort()`.

See Also:
  - Constant Field Values

### FLOAT

public static final int FLOAT
The sort of the `float` type. See `getSort()`.

See Also:
  - Constant Field Values

### LONG

public static final int LONG
The sort of the `long` type. See `getSort()`.

See Also:
  - Constant Field Values

### DOUBLE

public static final int DOUBLE
The sort of the `double` type. See `getSort()`.

See Also:
  - Constant Field Values

### ARRAY

public static final int ARRAY
The sort of array reference types. See `getSort()`.

See Also:
  - Constant Field Values

### OBJECT

public static final int OBJECT
The sort of object reference types. See `getSort()`.

See Also:
  - Constant Field Values

### METHOD

public static final int METHOD
The sort of method types. See `getSort()`.

See Also:
  - Constant Field Values

### 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 `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.