Sprache

MethodHandles.SpreadInvoker(MethodType, Int32) Methode

Definition

Erzeugt ein Methodenhandle, das jedes Methodenhandle des angegebenen typeAufrufs aufruft, wobei eine bestimmte Anzahl von nachgestellten Argumenten durch ein einzelnes nachfolgendes Object[] Array ersetzt wird.

[Android.Runtime.Register("spreadInvoker", "(Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? SpreadInvoker(Java.Lang.Invoke.MethodType? type, int leadingArgCount);
[<Android.Runtime.Register("spreadInvoker", "(Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member SpreadInvoker : Java.Lang.Invoke.MethodType * int -> Java.Lang.Invoke.MethodHandle

Parameter

type
MethodType

den gewünschten Zieltyp

leadingArgCount
Int32

Anzahl der festen Argumente, die unverändert an das Ziel übergeben werden sollen

Gibt zurück

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

Attribute

Hinweise

Erzeugt ein Methodenhandle, das jedes Methodenhandle des angegebenen typeAufrufs aufruft, wobei eine bestimmte Anzahl von nachgestellten Argumenten durch ein einzelnes nachfolgendes Object[] Array ersetzt wird. Der resultierende Aufrufer ist ein Methodenhandle mit den folgenden Argumenten: <ul><li>a single MethodHandle target <li zero or more leading values (counted by leadingArgCount) <li>>an Object[] array containing trailing arguments </ul>

Der Aufrufer ruft sein Ziel wie ein Aufruf MethodHandle#invoke invoke mit dem angegebenen typeauf. Das heißt, wenn das Ziel genau der angegebenen typeist, verhält es sich wie invokeExact; andernfalls verhält es sich so, als ob MethodHandle#asType asType es verwendet wird, um das Ziel in den erforderlichen typezu konvertieren.

Der Typ des zurückgegebenen Aufrufrs wird nicht angegeben type, sondern hat alle Parameter außer dem ersten leadingArgCount ersetzt durch ein einzelnes Array vom Typ Object[], das der letzte Parameter ist.

Vor dem Aufrufen des Ziels verteilt der Aufrufer das endgültige Array, wendet bei Bedarf Verweis casts an, entboxt und verbreitert primitive Argumente. Wenn beim Aufrufen des Aufrufs des Aufrufs das angegebene Arrayargument nicht über die richtige Anzahl von Elementen verfügt, löst der Aufrufer ein IllegalArgumentException , anstatt das Ziel aufzurufen.

Diese Methode entspricht dem folgenden Code (obwohl es möglicherweise effizienter ist): <Blockquote>

{@code
            MethodHandle invoker = MethodHandles.invoker(type);
            int spreadArgCount = type.parameterCount() - leadingArgCount;
            invoker = invoker.asSpreader(Object[].class, spreadArgCount);
            return invoker;
            }

</blockquote> Diese Methode löst keine reflektierenden oder Sicherheitseinnahmen aus.

Java Dokumentation für java.lang.invoke.MethodHandles.spreadInvoker(java.lang.invoke.MethodType, int).

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: