Class 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
    • Method Detail

      • 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.
        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.
      • 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.
      • 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).
      • 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).
      • 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.