Sprache

MethodHandles.ExactInvoker(MethodType) Methode

Definition

Erzeugt ein spezielles Em Invoker-Methodenhandle</em>>, das zum Aufrufen eines beliebigen Methodenhandles des angegebenen Typs verwendet werden kann, als wäre dies der FallMethodHandle#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

Parameter

type
MethodType

den gewünschten Zieltyp

Gibt zurück

ein Methodenhandle, das zum Aufrufen eines Methodenhandles des angegebenen Typs geeignet ist

Attribute

Hinweise

Erzeugt ein spezielles Em Invoker-Methodenhandle</em>>, das zum Aufrufen eines beliebigen Methodenhandles des angegebenen Typs verwendet werden kann, als wäre dies der FallMethodHandle#invokeExact invokeExact.< Der resultierende Aufrufer hat einen Typ, der exakt dem gewünschten Typ entspricht, mit der Ausnahme, dass er ein zusätzliches führendes Argument vom Typ MethodHandleakzeptiert.

Diese Methode entspricht dem folgenden Code (obwohl es möglicherweise effizienter ist): publicLookup().findVirtual(MethodHandle.class, "invokeExact", type)

<em>Discussion:</em> Invoker-Methodenhandles können nützlich sein, wenn Sie mit variablen Methodenhandles unbekannter Typen arbeiten. Um z. B. einen Aufruf eines invokeExact Variablenmethodenhandle Mzu emulieren, extrahieren Sie den Typ T, suchen Sie die Invoker-Methode X nach T, und rufen Sie die Aufrufermethode als X.invoke(T, A...). (Es funktioniert nicht, um aufzurufen X.invokeExact, da der Typ T unbekannt ist.) Wenn das Verbreiten, Sammeln oder andere Argumenttransformationen erforderlich sind, können sie einmal auf den Aufrufer X angewendet und für viele M Methodenhandlewerte wiederverwendet werden, solange sie mit dem Typ von X.

<em>(Hinweis: Die Invoker-Methode ist nicht über die Core Reflection-API verfügbar. Ein Versuch, java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke für die deklarierte invokeExact oder invoke Methode aufzurufen, löst eine java.lang.UnsupportedOperationException UnsupportedOperationException.)</em>

Diese Methode löst keine reflektierenden oder Sicherheitseinnahmen aus.

Java Dokumentation für java.lang.invoke.MethodHandles.exactInvoker(java.lang.invoke.MethodType).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: