Home Original page

MethodTypeDesc (Java SE 12 & JDK 12 )

  • All Superinterfaces:
    ConstantDesc, TypeDescriptor, TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>

    public interface MethodTypeDesc
    extends ConstantDesc, TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
    API Note:
    In the future, if the Java language permits, MethodTypeDesc may become a sealed interface, which would prohibit subclassing except by explicitly permitted types. Non-platform classes should not implement MethodTypeDesc directly.
    Since:
    12
    • Nested Class Summary

      • Nested classes/interfaces declared in interface java.lang.invoke.TypeDescriptor

        TypeDescriptor.OfField<F extends TypeDescriptor.OfField<F>>, TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>,​M extends TypeDescriptor.OfMethod<F,​M>>
    • Method Summary

      • Methods declared in interface java.lang.constant.ConstantDesc

        resolveConstantDesc
    • Method Detail

      • ofDescriptor

        static MethodTypeDesc ofDescriptor​(String descriptor)

        Creates a MethodTypeDesc given a method descriptor string.

        Parameters:
        descriptor - a method descriptor string
        Returns:
        a MethodTypeDesc describing the desired method type
        Throws:
        NullPointerException - if any argument is null
        IllegalArgumentException - if the descriptor string is not a valid method descriptor
        See The Java™ Virtual Machine Specification:
        4.3.3 Method Descriptors
      • of

        static MethodTypeDesc of​(ClassDesc returnDesc,
                                 ClassDesc... paramDescs)

        Returns a MethodTypeDesc given the return type and parameter types.

        Parameters:
        returnDesc - a ClassDesc describing the return type
        paramDescs - ClassDescs describing the argument types
        Returns:
        a MethodTypeDesc describing the desired method type
        Throws:
        NullPointerException - if any argument is null
      • returnType

        ClassDesc returnType()

        Gets the return type of the method type described by this MethodTypeDesc.

        Specified by:
        returnType in interface TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
        Returns:
        a ClassDesc describing the return type of the method type
      • parameterCount

        int parameterCount()

        Returns the number of parameters of the method type described by this MethodTypeDesc.

        Specified by:
        parameterCount in interface TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
        Returns:
        the number of parameters
      • parameterType

        ClassDesc parameterType​(int index)

        Returns the parameter type of the index'th parameter of the method type described by this MethodTypeDesc.

        Specified by:
        parameterType in interface TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
        Parameters:
        index - the index of the parameter to retrieve
        Returns:
        a ClassDesc describing the desired parameter type
        Throws:
        IndexOutOfBoundsException - if the index is outside the half-open range {[0, parameterCount())}
      • parameterList

        List<ClassDesc> parameterList()

        Returns the parameter types as an immutable List.

        Specified by:
        parameterList in interface TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
        Returns:
        a List of ClassDesc describing the parameter types
      • parameterArray

        ClassDesc[] parameterArray()

        Returns the parameter types as an array.

        Specified by:
        parameterArray in interface TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
        Returns:
        an array of ClassDesc describing the parameter types
      • changeReturnType

        MethodTypeDesc changeReturnType​(ClassDesc returnType)

        Returns a MethodTypeDesc that is identical to this one, except with the specified return type.

        Specified by:
        changeReturnType in interface TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
        Parameters:
        returnType - a ClassDesc describing the new return type
        Returns:
        a MethodTypeDesc describing the desired method type
        Throws:
        NullPointerException - if any argument is null
      • changeParameterType

        MethodTypeDesc changeParameterType​(int index,
                                           ClassDesc paramType)

        Returns a MethodTypeDesc that is identical to this one, except that a single parameter type has been changed to the specified type.

        Specified by:
        changeParameterType in interface TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
        Parameters:
        index - the index of the parameter to change
        paramType - a ClassDesc describing the new parameter type
        Returns:
        a MethodTypeDesc describing the desired method type
        Throws:
        NullPointerException - if any argument is null
        IndexOutOfBoundsException - if the index is outside the half-open range {[0, parameterCount)}
      • dropParameterTypes

        MethodTypeDesc dropParameterTypes​(int start,
                                          int end)

        Returns a MethodTypeDesc that is identical to this one, except that a range of parameter types have been removed.

        Specified by:
        dropParameterTypes in interface TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
        Parameters:
        start - the index of the first parameter to remove
        end - the index after the last parameter to remove
        Returns:
        a MethodTypeDesc describing the desired method type
        Throws:
        IndexOutOfBoundsException - if start is outside the half-open range {[0, parameterCount)}, or end is outside the closed range [0, parameterCount]
      • insertParameterTypes

        MethodTypeDesc insertParameterTypes​(int pos,
                                            ClassDesc... paramTypes)

        Returns a MethodTypeDesc that is identical to this one, except that a range of additional parameter types have been inserted.

        Specified by:
        insertParameterTypes in interface TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>
        Parameters:
        pos - the index at which to insert the first inserted parameter
        paramTypes - ClassDescs describing the new parameter types to insert
        Returns:
        a MethodTypeDesc describing the desired method type
        Throws:
        NullPointerException - if any argument is null
        IndexOutOfBoundsException - if pos is outside the closed range {[0, parameterCount]}
      • descriptorString

        default String descriptorString()

        Returns the method type descriptor string.

        Specified by:
        descriptorString in interface TypeDescriptor
        Returns:
        the method type descriptor string
        See The Java™ Virtual Machine Specification:
        4.3.3 Method Descriptors
      • displayDescriptor

        default String displayDescriptor()

        Returns a human-readable descriptor for this method type, using the canonical names for parameter and return types.

        Returns:
        the human-readable descriptor for this method type
      • equals

        boolean equals​(Object o)

        Compares the specified object with this descriptor for equality. Returns true if and only if the specified object is also a MethodTypeDesc both have the same arity, their return types are equal, and each pair of corresponding parameter types are equal.

        Overrides:
        equals in class Object
        Parameters:
        o - the other object
        Returns:
        whether this descriptor is equal to the other object
        See Also:
        Object.hashCode(), HashMap

Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2019, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.