Class Type


  • public final class Type
    extends java.lang.Object
    A Java field or method type. This class can be used to make it easier to manipulate type and method descriptors.
    • Field Summary

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

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean equals​(java.lang.Object object)
      Tests if the given object is equal to this type.
      int getArgumentsAndReturnSizes()
      Returns the size of the arguments and of the return value of methods of this type.
      static int getArgumentsAndReturnSizes​(java.lang.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​(java.lang.reflect.Method method)
      Returns the Type values corresponding to the argument types of the given method.
      static Type[] getArgumentTypes​(java.lang.String methodDescriptor)
      Returns the Type values corresponding to the argument types of the given method descriptor.
      java.lang.String getClassName()
      Returns the binary name of the class corresponding to this type.
      static java.lang.String getConstructorDescriptor​(java.lang.reflect.Constructor<?> constructor)
      Returns the descriptor corresponding to the given constructor.
      java.lang.String getDescriptor()
      Returns the descriptor corresponding to this type.
      static java.lang.String getDescriptor​(java.lang.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.
      java.lang.String getInternalName()
      Returns the internal name of the class corresponding to this object or array type.
      static java.lang.String getInternalName​(java.lang.Class<?> clazz)
      Returns the internal name of the given class.
      static java.lang.String getMethodDescriptor​(java.lang.reflect.Method method)
      Returns the descriptor corresponding to the given method.
      static java.lang.String getMethodDescriptor​(Type returnType, Type... argumentTypes)
      Returns the descriptor corresponding to the given argument and return types.
      static Type getMethodType​(java.lang.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​(java.lang.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​(java.lang.reflect.Method method)
      Returns the Type corresponding to the return type of the given method.
      static Type getReturnType​(java.lang.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​(java.lang.Class<?> clazz)
      Returns the Type corresponding to the given class.
      static Type getType​(java.lang.reflect.Constructor<?> constructor)
      Returns the method Type corresponding to the given constructor.
      static Type getType​(java.lang.reflect.Method method)
      Returns the method Type corresponding to the given method.
      static Type getType​(java.lang.String typeDescriptor)
      Returns the Type corresponding to the given type descriptor.
      int hashCode()
      Returns a hash code value for this type.
      java.lang.String toString()
      Returns a string representation of this type.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Method Detail

      • getType

        public static Type getType​(java.lang.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​(java.lang.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​(java.lang.reflect.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​(java.lang.reflect.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​(java.lang.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​(java.lang.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​(java.lang.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​(java.lang.reflect.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​(java.lang.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​(java.lang.reflect.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 java.lang.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 java.lang.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 java.lang.String getInternalName​(java.lang.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 java.lang.String getDescriptor()
        Returns the descriptor corresponding to this type.
        Returns:
        the descriptor corresponding to this type.
      • getDescriptor

        public static java.lang.String getDescriptor​(java.lang.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 java.lang.String getConstructorDescriptor​(java.lang.reflect.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 java.lang.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 java.lang.String getMethodDescriptor​(java.lang.reflect.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​(java.lang.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​(java.lang.Object object)
        Tests if the given object is equal to this type.
        Overrides:
        equals in class java.lang.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 java.lang.Object
        Returns:
        a hash code value for this type.
      • toString

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