MethodHandles.ExactInvoker(MethodType) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
生成特殊的 <em>invoker 方法句柄/em>,它可用于调用给定类型的任何方法句柄<,就像按此方式一MethodHandle#invokeExact invokeExact样。
[Android.Runtime.Register("exactInvoker", "(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? ExactInvoker(Java.Lang.Invoke.MethodType? type);
[<Android.Runtime.Register("exactInvoker", "(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member ExactInvoker : Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle
参数
- type
- MethodType
所需的目标类型
返回
适用于调用给定类型的任何方法句柄的方法句柄
- 属性
注解
生成特殊的 <em>invoker 方法句柄/em>,它可用于调用给定类型的任何方法句柄<,就像按此方式一MethodHandle#invokeExact invokeExact样。 生成的调用方将具有与所需类型完全相等的类型,只不过它将接受类型的 MethodHandle附加前导参数。
此方法等效于以下代码(尽管可能更高效): publicLookup().findVirtual(MethodHandle.class, "invokeExact", type)
<em>Discussion:</em> Invoker 方法句柄在处理未知类型的变量方法句柄时非常有用。 例如,若要模拟对invokeExact变量方法句柄M的调用,请提取其类型T,查找调用方方法,并调用调用方方法XT,如下所示X.invoke(T, A...)。 (由于类型T未知,因此无法调用X.invokeExact。如果需要分布、收集或其他参数转换,则可以将其一次应用于调用方X,并在许多M方法句柄值上重复使用,只要它们与类型X兼容。
<em>(注意:调用程序方法无法通过核心反射 API 使用。尝试在声明invokeExactinvoke的或方法上调用 java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke 将引发 .)<java.lang.UnsupportedOperationException UnsupportedOperationException/em>
此方法不引发反射或安全异常。
适用于 . 的 java.lang.invoke.MethodHandles.exactInvoker(java.lang.invoke.MethodType)Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。