Langage

MethodHandles.ExplicitCastArguments(MethodHandle, MethodType) Méthode

Définition

Produit un handle de méthode qui adapte le type du handle de méthode donné à un nouveau type par argument pair et conversion de type de retour.

[Android.Runtime.Register("explicitCastArguments", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? ExplicitCastArguments(Java.Lang.Invoke.MethodHandle? target, Java.Lang.Invoke.MethodType? newType);
[<Android.Runtime.Register("explicitCastArguments", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member ExplicitCastArguments : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

Paramètres

target
MethodHandle

handle de méthode à appeler une fois les arguments retapés

newType
MethodType

type attendu du nouveau handle de méthode

Retours

un handle de méthode qui délègue à la cible après avoir effectué les conversions d’arguments nécessaires et organise les conversions de valeur de retour nécessaires

Attributs

Remarques

Produit un handle de méthode qui adapte le type du handle de méthode donné à un nouveau type par argument pair et conversion de type de retour. Le type d’origine et le nouveau type doivent avoir le même nombre d’arguments. Le handle de méthode résultant est garanti pour signaler un type qui est égal au nouveau type souhaité.

Si le type d’origine et le nouveau type sont égaux, retourne la cible.

Les mêmes conversions sont autorisées pour MethodHandle#asType MethodHandle.asType, et certaines conversions supplémentaires sont également appliquées si ces conversions échouent. Les types <em>T0</em>, <em>T1</em>, l’une des conversions suivantes est appliquée si possible, avant ou au lieu de conversions effectuées par asType: <ul<>li>Em>< T0</em> et <em>T1</em> sont des références, et <em>T1</em> est un type d’interface, puis la valeur de type <em>T0</em> est passée en tant qu’em <>T1</em> sans cast. (Ce traitement des interfaces suit l’utilisation du vérificateur bytecode.) <li>Si <em>T0</em> est booléen et <em>T1</em> est une autre primitive, la valeur booléenne est convertie en valeur d’octet, 1 pour true, 0 pour false. (Ce traitement suit l’utilisation du vérificateur bytecode.) <li>Si <em>T1</>em est booléen et <em>T0</em> est une autre primitive, <em>T0</em> est converti en octet via Java conversion de cast (JLS 5.5), et le bit d’ordre faible du résultat est testé, comme si par (x & 1) != 0. <li>If <em>T0</em> et <em>T1</em> sont des primitives autres que booléennes, alors une conversion de cast Java (JLS 5.5) est appliquée. (Plus précisément, <em T0</em> se convertit en <em>T1</em> en élargissant et/ou en rétrécissant.) <>li>If <em>T0</em> est une référence et <em>T1</em> a primitive, une conversion d’unboxing sera appliquée au moment de l’exécution, éventuellement suivie d’une conversion de cast Java (JLS 5.5) sur la valeur primitive, éventuellement suivie d’une conversion d’octet en octet en booléen en testant le bit de faible ordre. <li>If <em>T0</em> est une référence et <em>T1</em> une primitive, et si la référence est null au moment de l’exécution, une valeur zéro est introduite. </ul>

Documentation Java pour java.lang.invoke.MethodHandles.explicitCastArguments(java.lang.invoke.MethodHandle, 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 à