MethodHandles.SpreadInvoker(MethodType, Int32) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Produce un handle di metodo che richiamerà qualsiasi handle di metodo dell'oggetto specificato type, con un determinato numero di argomenti finali sostituiti da una singola matrice finale Object[] .
[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
Parametri
- type
- MethodType
il tipo di destinazione desiderato
- leadingArgCount
- Int32
numero di argomenti fissi da passare invariati alla destinazione
Valori restituiti
handle di metodo adatto per richiamare qualsiasi handle di metodo del tipo specificato
- Attributi
Commenti
Produce un handle di metodo che richiamerà qualsiasi handle di metodo dell'oggetto specificato type, con un determinato numero di argomenti finali sostituiti da una singola matrice finale Object[] . Il invoker risultante sarà un handle di metodo con gli argomenti seguenti: <ul><li>un singolo MethodHandle target <li>zero o più valori iniziali (conteggiati da leadingArgCount) <li>una Object[] matrice contenente argomenti <finali /ul>
Il invoker richiamerà la destinazione come una chiamata a MethodHandle#invoke invoke con l'oggetto indicato type. Ovvero, se la destinazione è esattamente dell'oggetto specificato type, si comporterà come invokeExact; in caso contrario, si comporta come se MethodHandle#asType asType fosse usata per convertire la destinazione nell'oggetto richiesto type.
Il tipo del invoker restituito non sarà quello specificato type, ma avrà tutti i parametri tranne il primo leadingArgCount sostituito da una singola matrice di tipo Object[], che sarà il parametro finale.
Prima di richiamare la destinazione, il invoker distribuirà la matrice finale, applicherà cast di riferimento in base alle esigenze e unbox e argomenti primitivi di tipo unbox e widen. Se, quando viene chiamato il invoker, l'argomento matrice fornito non dispone del numero corretto di elementi, l'invoker genererà un'eccezione IllegalArgumentException anziché richiamare la destinazione.
Questo metodo equivale al codice seguente (anche se può essere più efficiente): <blockquote>
{@code
MethodHandle invoker = MethodHandles.invoker(type);
int spreadArgCount = type.parameterCount() - leadingArgCount;
invoker = invoker.asSpreader(Object[].class, spreadArgCount);
return invoker;
}
</blockquote> Questo metodo non genera eccezioni riflettenti o di sicurezza.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.