MethodHandles.GuardWithTest(MethodHandle, MethodHandle, MethodHandle) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
通过用测试保护目标方法句柄(布尔值方法句柄)使方法句柄适应目标方法句柄。
[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... 在伪代码中)不能通过执行测试来修改,因此在适当情况下将测试参数从调用方传递到目标或回退不变。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。