Linguaggio

MethodHandles.Lookup.Bind(Object, String, MethodType) Metodo

Definizione

Produce un handle di metodo con associazione anticipata per un metodo non statico.

[Android.Runtime.Register("bind", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public Java.Lang.Invoke.MethodHandle Bind(Java.Lang.Object receiver, string name, Java.Lang.Invoke.MethodType type);
[<Android.Runtime.Register("bind", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
member this.Bind : Java.Lang.Object * string * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

Parametri

receiver
Object

oggetto da cui si accede al metodo

name
String

nome del metodo

type
MethodType

il tipo del metodo, con l'argomento ricevitore omesso

Valori restituiti

handle del metodo desiderato

Attributi

Commenti

Produce un handle di metodo con associazione anticipata per un metodo non statico. Il ricevitore deve avere un supertipo defc in cui un metodo con il nome e il tipo specificati è accessibile alla classe di ricerca. Il metodo e tutti i relativi tipi di argomento devono essere accessibili all'oggetto di ricerca. Il tipo dell'handle del metodo sarà quello del metodo, senza l'inserimento di un parametro ricevitore aggiuntivo. Il ricevitore specificato verrà associato nell'handle del metodo, in modo che ogni chiamata all'handle del metodo richiami il metodo richiesto nel ricevitore specificato.

L'handle del metodo restituito avrà l'arità della variabile MethodHandle#asVarargsCollector se e solo se il bit del modificatore di arity della variabile del metodo (0x0080) è impostato <em>e</em> l'argomento matrice finale non è l'unico argomento. Se l'argomento matrice finale è l'unico argomento, il valore del ricevitore specificato verrà associato.

Equivale al codice seguente: <blockquote>

{@code
            import static java.lang.invoke.MethodHandles.*;
            import static java.lang.invoke.MethodType.*;
            ...
            MethodHandle mh0 = lookup().findVirtual(defc, name, type);
            MethodHandle mh1 = mh0.bindTo(receiver);
            MethodType mt1 = mh1.type();
            if (mh0.isVarargsCollector())
              mh1 = mh1.asVarargsCollector(mt1.parameterType(mt1.parameterCount()-1));
            return mh1;
            }

</blockquote> dove defc è receiver.getClass() o un super tipo di tale classe, in cui il metodo richiesto è accessibile alla classe di ricerca. Si noti che bindTo non mantiene l'arità delle variabili.

per java.lang.invoke.MethodHandles.Lookup.bind(java.lang.Object, java.lang.String, 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