Sprache

MethodHandles.ExplicitCastArguments(MethodHandle, MethodType) Methode

Definition

Erzeugt ein Methodenhandle, das den Typ des angegebenen Methodenhandles an einen neuen Typ anpasst, indem argumentweise Argument und Rückgabetypkonvertierung verwendet werden.

[Android.Runtime.Register("explicitCastArguments", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? ExplicitCastArguments(Java.Lang.Invoke.MethodHandle? target, Java.Lang.Invoke.MethodType? newType);
[<Android.Runtime.Register("explicitCastArguments", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member ExplicitCastArguments : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

Parameter

target
MethodHandle

Das Methodenhandle, das aufgerufen werden soll, nachdem Argumente neu eingegeben wurden

newType
MethodType

der erwartete Typ des neuen Methodenhandles

Gibt zurück

ein Methodenhandle, das nach der Durchführung aller erforderlichen Argumentkonvertierungen an das Ziel delegiert wird, und ordnet alle erforderlichen Rückgabewertkonvertierungen an.

Attribute

Hinweise

Erzeugt ein Methodenhandle, das den Typ des angegebenen Methodenhandles an einen neuen Typ anpasst, indem argumentweise Argument und Rückgabetypkonvertierung verwendet werden. Der ursprüngliche Typ und der neue Typ müssen dieselbe Anzahl von Argumenten aufweisen. Der resultierende Methodenhandle wird garantiert einen Typ melden, der dem gewünschten neuen Typ entspricht.

Wenn der ursprüngliche Typ und der neue Typ gleich sind, wird das Ziel zurückgegeben.

Dieselben Konvertierungen sind zulässig wie für MethodHandle#asType MethodHandle.asType, und einige zusätzliche Konvertierungen werden auch angewendet, wenn diese Konvertierungen fehlschlagen. Bei bestimmten Typen em T0</em, <em>T1</em>> wird eine der folgenden Konvertierungen, sofern möglich, vor oder anstelle von Konvertierungen angewendet, die von asType: <ul><li>If <em>T0</em und em>T1</em Bezüge sind, und <<em>T1</>em> ist ein Schnittstellentyp, und der Wert des Typs <em>T0</em> wird als <em>T1</em>> ohne Umwandlung übergeben.>< (Diese Behandlung von Schnittstellen folgt der Verwendung des Bytecode-Verifiers.) <li>Wenn <em T0</em boolescher Wert ist und <em>>T1</em>> ein anderer Grundtyp ist, wird der boolesche Wert in einen Bytewert konvertiert, 1 für "true", "0" für "false". (Diese Behandlung folgt der Verwendung des Bytecode-Verifiers.) <li>Wenn <em>T1</em boolesch und <em>T0</em>> ein anderer Grundtyp ist, <wird em>T0</em> über Java Umwandlungskonvertierung (JLS 5.5) in Byte konvertiert, und das Bit der niedrigen Reihenfolge des Ergebnisses wird getestet, als wäre es durch (x & 1) != 0. <li>If <em>T0</em and <em>T1</em>> are primitiven other than boolean, then a Java casting conversion (JLS 5.5) is applied. (Insbesondere <wird em T0</em durch Verbreiterung und/oder Schmalung in <em>>T1</em>> konvertiert.) <li>Wenn <em T0</em ein Verweis ist und <em>>T1</em>> ein Grundtyp ist, wird eine Unboxing-Konvertierung zur Laufzeit angewendet, möglicherweise gefolgt von einer Java Umwandlung (JLS 5.5) auf den Grundtypwert, möglicherweise gefolgt von einer Konvertierung von Byte zu booleschen Werten, indem das Bit mit niedriger Reihenfolge getestet wird. <li>Wenn <em T0</em ein Verweis und <em>>T1</em>> ein Grundtyp ist und wenn der Verweis zur Laufzeit null ist, wird ein Nullwert eingeführt. </ul>

Java Dokumentation für java.lang.invoke.MethodHandles.explicitCastArguments(java.lang.invoke.MethodHandle, 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: