MethodHandles.Lookup.Bind(Object, String, MethodType) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erzeugt einen früh gebundenen Methodenhandle für eine nicht statische Methode.
[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
Parameter
- receiver
- Object
das Objekt, von dem aus auf die Methode zugegriffen wird
- name
- String
der Name der Methode
- type
- MethodType
der Typ der Methode, wobei das Empfängerargument weggelassen wird
Gibt zurück
das gewünschte Methodenhandle
- Attribute
Hinweise
Erzeugt einen früh gebundenen Methodenhandle für eine nicht statische Methode. Der Empfänger muss über einen Supertyp defc verfügen, in dem eine Methode des angegebenen Namens und Typs für die Nachschlageklasse zugänglich ist. Auf die Methode und alle zugehörigen Argumenttypen muss für das Nachschlageobjekt zugegriffen werden kann. Der Typ des Methodenhandles entspricht der Methode, ohne dass ein zusätzlicher Empfängerparameter eingefügt wird. Der angegebene Empfänger wird an den Methodenhandle gebunden, sodass jeder Aufruf des Methodenhandles die angeforderte Methode für den angegebenen Empfänger aufruft.
Der zurückgegebene Methodenhandle weist die Variable MethodHandle#asVarargsCollectorvariablen auf, wenn und nur dann, wenn der Variablenvariablen-Modifizierer-Bit (0x0080) der Methode em <>und/em> festgelegt ist,< das nachfolgende Arrayargument nicht das einzige Argument ist. (Wenn das nachfolgende Arrayargument das einzige Argument ist, wird der angegebene Empfängerwert an das Argument gebunden.)
Dies entspricht dem folgenden Code: <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> where defc is either receiver.getClass() or a super type of that class, in which the requested method is accessible to the lookup class. (Beachten Sie, dass bindTo die Variable nicht erhalten bleibt.)
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.