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

Definição

Faz um identificador de método que adapta um identificador de método de destino, guardando-o com um teste, um identificador de método com valor booliano.

[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 teste, deve retornar booliano

target
MethodHandle

identificador de método para chamar se o teste for aprovado

fallback
MethodHandle

identificador de método para chamar se o teste falhar

Retornos

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

Atributos

Comentários

Faz um identificador de método que adapta um identificador de método de destino, guardando-o com um teste, um identificador de método com valor booliano. Se o guarda falhar, um identificador de fallback será chamado. Todos os três identificadores de método devem ter os mesmos tipos de argumento e retorno correspondentes, exceto que o tipo de retorno do teste deve ser booliano e o teste tem permissão para ter menos argumentos do que os outros dois identificadores de método.

Aqui está o pseudocódigo para o 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> Observe que os argumentos de teste (a... no pseudocódigo) não podem ser modificados pela execução do teste e, portanto, são passados inalterados do chamador para o destino ou fallback conforme apropriado.

Documentação Java para java.lang.invoke.MethodHandles.guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usadas de acordo com os termos descritos na Licença de Atribuição Creative Commons 2.5.

Aplica-se a