Lenguaje

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

Definición

Convierte un identificador de método que adapta un identificador de método de destino, protegiéndolo con una prueba, un identificador de método con valores booleanos.

[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

Parámetros

test
MethodHandle

identificador de método usado para la prueba, debe devolver un valor booleano.

target
MethodHandle

identificador de método para llamar a si se supera la prueba

fallback
MethodHandle

identificador de método para llamar si se produce un error en la prueba

Devoluciones

identificador de método que incorpora la lógica if/then/else especificada

Atributos

Comentarios

Convierte un identificador de método que adapta un identificador de método de destino, protegiéndolo con una prueba, un identificador de método con valores booleanos. Si se produce un error en la protección, se llama a un identificador de reserva en su lugar. Los tres identificadores de método deben tener el mismo argumento y tipos devueltos correspondientes, excepto que el tipo de valor devuelto de la prueba debe ser booleano y la prueba puede tener menos argumentos que los otros dos identificadores de método.

Este es el pseudocódigo para el adaptador resultante: <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> Tenga en cuenta que los argumentos de prueba (a... en el pseudocódigo) no se pueden modificar mediante la ejecución de la prueba y, por tanto, se pasan sin cambios del autor de la llamada al destino o reserva según corresponda.

Java documentación para java.lang.invoke.MethodHandles.guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Se aplica a