Linguaggio

MethodHandles.GuardWithTest(MethodHandle, MethodHandle, MethodHandle) Metodo

Definizione

Rende un handle di metodo che adatta un handle di metodo di destinazione, sorvegliandolo con un test, un handle di metodo con valori booleani.

[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

Parametri

test
MethodHandle

handle del metodo usato per il test, deve restituire un valore booleano

target
MethodHandle

handle del metodo per chiamare se il test supera

fallback
MethodHandle

handle del metodo per chiamare se il test ha esito negativo

Valori restituiti

handle del metodo che incorpora la logica if/then/else specificata

Attributi

Commenti

Rende un handle di metodo che adatta un handle di metodo di destinazione, sorvegliandolo con un test, un handle di metodo con valori booleani. Se la protezione ha esito negativo, viene invece chiamato un handle di fallback. Tutti e tre gli handle di metodo devono avere lo stesso argomento e gli stessi tipi restituiti, ad eccezione del fatto che il tipo restituito del test deve essere booleano e il test può avere meno argomenti rispetto agli altri due handle di metodo.

Ecco lo pseudocodice per l'adattatore risultante: <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> Si noti che gli argomenti di test (a... nello pseudocodice) non possono essere modificati dall'esecuzione del test e quindi vengono passati invariati dal chiamante alla destinazione o al fallback in base alle esigenze.

Documentazione java per java.lang.invoke.MethodHandles.guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a