MethodHandles.ExactInvoker(MethodType) Метод

Определение

Создает специальный <дескриптор< метода em>invoker,> который может использоваться для вызова любого дескриптора метода заданного типа, как если бы с помощью 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,> который может использоваться для вызова любого дескриптора метода заданного типа, как если бы с помощью MethodHandle#invokeExact invokeExact. Результирующий вызывающий объект будет иметь тип, точно равный требуемому типу, за исключением того, что он будет принимать дополнительный ведущий аргумент типа MethodHandle.

Этот метод эквивалентен следующему коду (хотя он может быть более эффективным): publicLookup().findVirtual(MethodHandle.class, "invokeExact", type)<p style="font-size:smaller;"><Дескрипторы метода em>Discussion:</em> Invoker могут быть полезны при работе с дескрипторами переменных методов неизвестных типов. Например, чтобы эмулировать вызов дескриптора Mпеременной метода , извлеките его тип T, найдите метод X invoker для Tи вызовите метод вызывающего объекта в виде X.invoke(T, A...).invokeExact (Вызов не будет работать X.invokeExact, так как тип T неизвестен.) Если требуется распространение, сбор или другие преобразования аргументов, их можно применить один раз к вызывающей X стороне и повторно использовать во многих M значениях дескрипторов метода, если они совместимы с типом X. <p style="font-size:smaller;"><em>(Примечание. Метод вызывающего средства недоступен через API отражения Core. Попытка вызвать java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke в объявленном invokeExact методе или invoke вызовет исключение java.lang.UnsupportedOperationException UnsupportedOperationException.)</Em>

Этот метод не создает отражающих исключений или исключений безопасности.

Документация по Java для java.lang.invoke.MethodHandles.exactInvoker(java.lang.invoke.MethodType).

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.

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