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.