Module java.base

Interface MethodHandleDesc

    • Method Detail

      • of

        static DirectMethodHandleDesc of​(DirectMethodHandleDesc.Kind kind,
                                         ClassDesc owner,
                                         String name,
                                         String lookupDescriptor)
        Creates a MethodHandleDesc corresponding to an invocation of a declared method, invocation of a constructor, or access to a field.

        The lookup descriptor string has the same format as for the various variants of CONSTANT_MethodHandle_info and for the lookup methods on MethodHandles.Lookup. For a method or constructor invocation, it is interpreted as a method type descriptor; for field access, it is interpreted as a field descriptor. If kind is CONSTRUCTOR, the name parameter is ignored and the return type of the lookup descriptor must be void. If kind corresponds to a virtual method invocation, the lookup type includes the method parameters but not the receiver type.

        Parameters:
        kind - The kind of method handle to be described
        owner - a ClassDesc describing the class containing the method, constructor, or field
        name - the unqualified name of the method or field (ignored if kind is CONSTRUCTOR)
        lookupDescriptor - a method descriptor string the lookup type, if the request is for a method invocation, or describing the invocation type, if the request is for a field or constructor
        Returns:
        the MethodHandleDesc
        Throws:
        NullPointerException - if any of the non-ignored arguments are null
        See The Java™ Virtual Machine Specification:
        4.4.8 The CONSTANT_MethodHandle_info Structure, 4.2.2 Unqualified Names, 4.3.2 Field Descriptors, 4.3.3 Method Descriptors
      • ofMethod

        static DirectMethodHandleDesc ofMethod​(DirectMethodHandleDesc.Kind kind,
                                               ClassDesc owner,
                                               String name,
                                               MethodTypeDesc lookupMethodType)
        Creates a MethodHandleDesc corresponding to an invocation of a declared method or constructor.

        The lookup descriptor string has the same format as for the lookup methods on MethodHandles.Lookup. If kind is CONSTRUCTOR, the name is ignored and the return type of the lookup type must be void. If kind corresponds to a virtual method invocation, the lookup type includes the method parameters but not the receiver type.

        Parameters:
        kind - The kind of method handle to be described; must be one of SPECIAL, VIRTUAL, STATIC, INTERFACE_SPECIAL, INTERFACE_VIRTUAL, INTERFACE_STATIC, CONSTRUCTOR
        owner - a ClassDesc describing the class containing the method or constructor
        name - the unqualified name of the method (ignored if kind is CONSTRUCTOR)
        lookupMethodType - a MethodTypeDesc describing the lookup type
        Returns:
        the MethodHandleDesc
        Throws:
        NullPointerException - if any non-ignored arguments are null
        IllegalArgumentException - if the name has the incorrect format, or the kind is invalid
        See The Java™ Virtual Machine Specification:
        4.2.2 Unqualified Names
      • invocationType

        MethodTypeDesc invocationType()
        Returns a MethodTypeDesc describing the invocation type of the method handle described by this nominal descriptor. The invocation type describes the full set of stack values that are consumed by the invocation (including the receiver, if any).
        Returns:
        a MethodHandleDesc describing the method handle 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 MethodHandleDesc, and both encode the same nominal description of a method handle.
        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