MethodHandles.SpreadInvoker(MethodType, Int32) 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 qui appelle n’importe quel handle de méthode de l’argument donné type, avec un nombre donné d’arguments de fin remplacés par un tableau de Object[] fin unique.
[Android.Runtime.Register("spreadInvoker", "(Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? SpreadInvoker(Java.Lang.Invoke.MethodType? type, int leadingArgCount);
[<Android.Runtime.Register("spreadInvoker", "(Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member SpreadInvoker : Java.Lang.Invoke.MethodType * int -> Java.Lang.Invoke.MethodHandle
Paramètres
- type
- MethodType
type cible souhaité
- leadingArgCount
- Int32
nombre d’arguments fixes, à passer inchangés à la cible
Retours
un handle de méthode adapté à l’appel d’un handle de méthode du type donné
- Attributs
Remarques
Produit un handle de méthode qui appelle n’importe quel handle de méthode de l’argument donné type, avec un nombre donné d’arguments de fin remplacés par un tableau de Object[] fin unique. L’appelant résultant sera un handle de méthode avec les arguments suivants : <ul><li>une seule MethodHandle cible <li>zéro ou plus de valeurs de début (comptées par leadingArgCount) <li>un Object[] tableau contenant des arguments <de fin /ul>
L’appelant appellera sa cible comme un appel avec MethodHandle#invoke invoke l’appelant indiqué type. Autrement dit, si la cible est exactement de l’élément donné type, elle se comporte comme invokeExactsi elle se comporte comme si MethodHandle#asType asType elle était utilisée pour convertir la cible en la cible requise type.
Le type de l’appelant retourné ne sera pas le donné type, mais aura plutôt tous les paramètres, sauf le premier leadingArgCount remplacé par un seul tableau de type Object[], qui sera le paramètre final.
Avant d’appeler sa cible, l’appelant répartit le tableau final, applique les casts de référence si nécessaire, et désactive les arguments primitifs et larges. Si, lorsque l’appelant est appelé, l’argument de tableau fourni n’a pas le nombre correct d’éléments, l’appelant lève un IllegalArgumentException appel au lieu d’appeler la cible.
Cette méthode équivaut au code suivant (bien qu’elle soit plus efficace) : <blockquote>
{@code
MethodHandle invoker = MethodHandles.invoker(type);
int spreadArgCount = type.parameterCount() - leadingArgCount;
invoker = invoker.asSpreader(Object[].class, spreadArgCount);
return invoker;
}
</blockquote> Cette méthode ne lève aucune exception de réflexion ou de sécurité.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.