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... в псевдокоде) не могут быть изменены выполнением теста и поэтому передаются без изменений от вызывающего объекта в целевой объект или резервный вариант в соответствии с соответствующим образом.
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".