MethodHandles.ExactInvoker(MethodType) 方法

定义

生成特殊的 <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 属性许可证中所述的术语使用。

适用于