Linguaggio

MethodHandles.ExplicitCastArguments(MethodHandle, MethodType) Metodo

Definizione

Produce un handle di metodo che adatta il tipo dell'handle di metodo specificato a un nuovo tipo in base all'argomento pairwise e alla conversione del tipo restituito.

[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

Parametri

target
MethodHandle

handle del metodo da richiamare dopo che gli argomenti vengono ritipati

newType
MethodType

tipo previsto del nuovo handle di metodo

Valori restituiti

handle di metodo che delega alla destinazione dopo l'esecuzione di tutte le conversioni di argomenti necessarie e dispone per le conversioni di valori restituiti necessarie

Attributi

Commenti

Produce un handle di metodo che adatta il tipo dell'handle di metodo specificato a un nuovo tipo in base all'argomento pairwise e alla conversione del tipo restituito. Il tipo originale e il nuovo tipo devono avere lo stesso numero di argomenti. L'handle del metodo risultante è garantito per segnalare un tipo uguale al nuovo tipo desiderato.

Se il tipo originale e il nuovo tipo sono uguali, restituisce la destinazione.

Le stesse conversioni sono consentite come per MethodHandle#asType MethodHandle.asTypee alcune conversioni aggiuntive vengono applicate anche se tali conversioni hanno esito negativo. I tipi <em>T0</em>, em>T1</em>, <una delle conversioni seguenti viene applicata, se possibile, prima o invece di qualsiasi conversione eseguita da asType: <ul><li>If <em>T0</em> e <em>T1/em> sono riferimenti e <em>T1</em> è un tipo di interfaccia, quindi il valore di tipo <em>T0</em viene passato come <em>T1<</em>> senza cast. Questo trattamento delle interfacce segue l'utilizzo del verificatore di bytecode. <li>Se <em>T0</em> è booleano e <em>T1</em> è un'altra primitiva, il valore booleano viene convertito in un valore di byte, 1 per true, 0 per false. (Questo trattamento segue l'utilizzo del verificatore di bytecode. <li>Se <em>T1</em> è booleano e <em>T0</em> è un'altra primitiva, <em>T0</em> viene convertito in byte tramite conversione di cast Java (JLS 5.5) e viene testato il bit di ordine basso del risultato, come se fosse (x & 1) != 0. <li>Se <em>T0</em> e <em>T1</em> sono primitive diverse dal booleano, viene applicata una conversione di cast Java (JLS 5.5). In particolare, <em>T0</em> convertirà <in em>T1</em> espandendo e/o restringendo. <li>Se <em>T0</em> è un riferimento e <em>T1</em> una primitiva, in fase di esecuzione verrà applicata una conversione unboxing, possibilmente seguita da una conversione di cast Java (JLS 5.5) sul valore primitivo, possibilmente seguita da una conversione da byte a boolean testando il bit in ordine basso. <li>Se <em>T0</em> è un riferimento e <em>T1</em> una primitiva e se il riferimento è Null in fase di esecuzione, viene introdotto un valore zero. </ul>

per java.lang.invoke.MethodHandles.explicitCastArguments(java.lang.invoke.MethodHandle, 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