Язык

MethodHandles.GuardWithTest(MethodHandle, MethodHandle, MethodHandle) Метод

Определение

Делает дескриптор метода, который адаптирует дескриптор целевого метода, охраняя его с помощью теста, логического дескриптора метода.

[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

Параметры

test
MethodHandle

Дескриптор метода, используемый для тестирования, должен возвращать логическое значение

target
MethodHandle

Дескриптор метода для вызова при прохождении теста

fallback
MethodHandle

Дескриптор метода для вызова при сбое теста

Возвращаемое значение

Дескриптор метода, который включает указанную логику if/then/else

Атрибуты

Комментарии

Делает дескриптор метода, который адаптирует дескриптор целевого метода, охраняя его с помощью теста, логического дескриптора метода. Если охранник завершается ошибкой, вместо этого вызывается резервный дескриптор. Все три дескриптора методов должны иметь одинаковые соответствующие аргументы и типы возвращаемых значений, за исключением того, что возвращаемый тип теста должен быть логическим, и тест может иметь меньше аргументов, чем другие два дескриптора метода.

Ниже приведен псевдокод для результирующего адаптера: <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> Обратите внимание, что аргументы теста (a... в псевдокоде) не могут быть изменены выполнением теста и поэтому передаются без изменений от вызывающего объекта в целевой объект или резервный вариант в соответствии с соответствующим образом.

Java документации по java.lang.invoke.MethodHandles.guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Применяется к