Idioma

MethodHandles.ExactInvoker(MethodType) Método

Definição

Produz um identificador< de método em>invoker especial <que> pode ser usado para invocar qualquer identificador de método do tipo determinado, como se fosse por 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

Parâmetros

type
MethodType

o tipo de destino desejado

Retornos

um identificador de método adequado para invocar qualquer identificador de método do tipo fornecido

Atributos

Comentários

Produz um identificador< de método em>invoker especial <que> pode ser usado para invocar qualquer identificador de método do tipo determinado, como se fosse por MethodHandle#invokeExact invokeExact. O invocador resultante terá um tipo exatamente igual ao tipo desejado, exceto que ele aceitará um argumento principal adicional do tipo MethodHandle.

Esse método é equivalente ao código a seguir (embora possa ser mais eficiente): publicLookup().findVirtual(MethodHandle.class, "invokeExact", type)

<em>Discussão:</em> Identificadores de método invoker podem ser úteis ao trabalhar com identificadores de método variável de tipos desconhecidos. Por exemplo, para emular uma invokeExact chamada para um identificador Mde método variável, extrair seu tipoT, procure o método TX de invocador e chame o método de invocador, como X.invoke(T, A...). (Não funcionaria chamar X.invokeExact, pois o tipo T é desconhecido.) Se forem necessárias transformações de texto, coleta ou outras transformações de argumento, elas poderão ser aplicadas uma vez ao invocador X e reutilizados em muitos M valores de identificador de método, desde que sejam compatíveis com o tipo de X.

<em>(Observação: o método de invocador não está disponível por meio da API de Reflexão Principal. Uma tentativa de chamar java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke no método declarado invokeExactinvoke gerará um java.lang.UnsupportedOperationException UnsupportedOperationException.)</em>

Esse método não gera exceções reflexivas ou de segurança.

Documentação Java para java.lang.invoke.MethodHandles.exactInvoker(java.lang.invoke.MethodType).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usadas de acordo com os termos descritos na Licença de Atribuição Creative Commons 2.5.

Aplica-se a