Sprache

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

Definition

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.)

Java Dokumentation für java.lang.invoke.MethodHandles.Lookup.bind(java.lang.Object, java.lang.String, 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: