Langage

MethodHandles.GuardWithTest(MethodHandle, MethodHandle, MethodHandle) Méthode

Définition

Rend un handle de méthode qui adapte un handle de méthode cible, en le mettant en garde avec un test, un handle de méthode booléen.

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

Paramètres

test
MethodHandle

handle de méthode utilisé pour le test, doit retourner booléen

target
MethodHandle

handle de méthode à appeler si le test réussit

fallback
MethodHandle

handle de méthode à appeler en cas d’échec du test

Retours

handle de méthode qui incorpore la logique if/then/else spécifiée

Attributs

Remarques

Rend un handle de méthode qui adapte un handle de méthode cible, en le mettant en garde avec un test, un handle de méthode booléen. Si le garde échoue, une poignée de secours est appelée à la place. Les trois handles de méthode doivent avoir les mêmes types d’arguments et de retour correspondants, sauf que le type de retour du test doit être booléen et que le test est autorisé à avoir moins d’arguments que les deux autres handles de méthode.

Voici un pseudocode pour l’adaptateur résultant : <blockquote>

{@code
            boolean test(A...);
            T target(A...,B...);
            T fallback(A...,B...);
            T adapter(A... a,B... b) {
              if (test(a...))
                return target(a..., b...);
              else
                return fallback(a..., b...);
            }
            }

</blockquote> Notez que les arguments de test (a... dans le pseudocode) ne peuvent pas être modifiés par l’exécution du test, et sont donc passés inchangés de l’appelant à la cible ou à la secours selon les besoins.

Java documentation pour java.lang.invoke.MethodHandles.guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

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.

S’applique à