Sprache

MethodHandles.GuardWithTest(MethodHandle, MethodHandle, MethodHandle) Methode

Definition

Erstellt ein Methodenhandle, mit dem ein Zielmethodenhandle angepasst wird, indem er mit einem Test geschützt wird, ein boolescher Methodenhandle.

[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

Parameter

test
MethodHandle

Für Test verwendete Methodenhandle muss boolescher Wert zurückgegeben werden.

target
MethodHandle

Methodenhandle zum Aufrufen, wenn der Test bestanden wurde

fallback
MethodHandle

Methodenhandle zum Aufrufen, wenn der Test fehlschlägt

Gibt zurück

Methodenhandle, das die angegebene If/then/else-Logik enthält

Attribute

Hinweise

Erstellt ein Methodenhandle, mit dem ein Zielmethodenhandle angepasst wird, indem er mit einem Test geschützt wird, ein boolescher Methodenhandle. Wenn der Schutz fehlschlägt, wird stattdessen ein Fallbackhandle aufgerufen. Alle drei Methodenhandles müssen dasselbe entsprechende Argument und die Rückgabetypen aufweisen, mit der Ausnahme, dass der Rückgabetyp des Tests boolescher Wert sein muss, und der Test darf weniger Argumente haben als die anderen beiden Methodenhandles.

Hier ist pseudocode für den resultierenden Adapter: <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> Note that the test arguments (a... in the pseudocode) cannot be modified by execution of the test, and so are passed unchanged from the caller to the target or fallback as appropriate.

Java Dokumentation für java.lang.invoke.MethodHandles.guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: