MethodHandles.Lookup.Bind(Object, String, MethodType) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.)
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.