Linguaggio

MethodHandles.ExactInvoker(MethodType) Metodo

Definizione

Produce un handle< di metodo em>invoker speciale</em> che può essere usato per richiamare qualsiasi handle di metodo del tipo specificato, come se fosse 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

Parametri

type
MethodType

il tipo di destinazione desiderato

Valori restituiti

handle di metodo adatto per richiamare qualsiasi handle di metodo del tipo specificato

Attributi

Commenti

Produce un handle< di metodo em>invoker speciale</em> che può essere usato per richiamare qualsiasi handle di metodo del tipo specificato, come se fosse MethodHandle#invokeExact invokeExact. Il invoker risultante avrà un tipo che è esattamente uguale al tipo desiderato, ad eccezione del fatto che accetterà un argomento iniziale aggiuntivo di tipo MethodHandle.

Questo metodo equivale al codice seguente (anche se può essere più efficiente): publicLookup().findVirtual(MethodHandle.class, "invokeExact", type)

<em>Discussion:</em> Invoker method handle può essere utile quando si utilizzano handle di metodi variabili di tipi sconosciuti. Ad esempio, per emulare una invokeExact chiamata a un handle Mdi metodo variabile , estrarre il tipo T, cercare il metodo X invoker per Te chiamare il metodo invoker, come X.invoke(T, A...). Non funzionerebbe per chiamare X.invokeExact, perché il tipo T è sconosciuto. Se sono necessarie operazioni di distribuzione, raccolta o altre trasformazioni di argomenti, possono essere applicate una sola volta al invoker X e riutilizzate in molti M valori dell'handle di metodo, purché siano compatibili con il tipo di X.

<em>(Nota: il metodo invoker non è disponibile tramite l'API Reflection core. Un tentativo di chiamare java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke nel metodo dichiarato invokeExact o invoke genererà un oggetto java.lang.UnsupportedOperationException UnsupportedOperationException.</em>

Questo metodo non genera eccezioni riflettenti o di sicurezza.

per java.lang.invoke.MethodHandles.exactInvoker(java.lang.invoke.MethodType).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a