Langue

MethodHandles.Lookup.Bind(Object, String, MethodType) Méthode

Définition

Produit un handle de méthode à liaison anticipée pour une méthode non statique.

[Android.Runtime.Register("bind", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public Java.Lang.Invoke.MethodHandle Bind(Java.Lang.Object receiver, string name, Java.Lang.Invoke.MethodType type);
[<Android.Runtime.Register("bind", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
member this.Bind : Java.Lang.Object * string * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

Paramètres

receiver
Object

l’objet à partir duquel la méthode est accessible

name
String

nom de la méthode

type
MethodType

type de la méthode, avec l’argument récepteur omis

Retours

handle de méthode souhaité

Attributs

Remarques

Produit un handle de méthode à liaison anticipée pour une méthode non statique. Le récepteur doit avoir un supertype defc dans lequel une méthode du nom et du type donnés est accessible à la classe de recherche. La méthode et tous ses types d’arguments doivent être accessibles à l’objet de recherche. Le type du handle de méthode est celui de la méthode, sans insertion d’un paramètre de récepteur supplémentaire. Le récepteur donné est lié au handle de méthode, de sorte que chaque appel au handle de méthode appelle la méthode demandée sur le récepteur donné.

Le handle de méthode retourné a MethodHandle#asVarargsCollector variable arity si et seulement si le bit du modificateur de variable arity (0x0080) de la méthode est défini <em>et</em> l’argument de tableau de fin n’est pas le seul argument. (Si l’argument de tableau de fin est le seul argument, la valeur de récepteur donnée sera liée à celle-ci.)

Cela équivaut au code suivant : <blockquote>

{@code
            import static java.lang.invoke.MethodHandles.*;
            import static java.lang.invoke.MethodType.*;
            ...
            MethodHandle mh0 = lookup().findVirtual(defc, name, type);
            MethodHandle mh1 = mh0.bindTo(receiver);
            MethodType mt1 = mh1.type();
            if (mh0.isVarargsCollector())
              mh1 = mh1.asVarargsCollector(mt1.parameterType(mt1.parameterCount()-1));
            return mh1;
            }

</blockquote> , où defc est soit receiver.getClass() un super type de cette classe, dans lequel la méthode demandée est accessible à la classe de recherche. (Notez que bindTo ne conserve pas la arité des variables.)

Java documentation pour java.lang.invoke.MethodHandles.Lookup.bind(java.lang.Object, java.lang.String, java.lang.invoke.MethodType).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

S’applique à