MethodHandles.Lookup.FindConstructor(Class, 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 ein Methodenhandle, das ein Objekt erstellt und mithilfe des Konstruktors des angegebenen Typs initialisiert.
[Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public Java.Lang.Invoke.MethodHandle FindConstructor (Java.Lang.Class refc, Java.Lang.Invoke.MethodType type);
[<Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
member this.FindConstructor : Java.Lang.Class * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle
Parameter
- refc
- Class
die Klasse oder Schnittstelle, von der aus auf die Methode zugegriffen wird
- type
- MethodType
der Typ der Methode, wobei das Empfängerargument weggelassen wird, und ein void-Rückgabetyp
Gibt zurück
das gewünschte Methodenhandle
- Attribute
Hinweise
Erzeugt ein Methodenhandle, das ein Objekt erstellt und mithilfe des Konstruktors des angegebenen Typs initialisiert. Die Parametertypen des Methodenhandles sind diejenigen des Konstruktors, während der Rückgabetyp ein Verweis auf die Klasse des Konstruktors ist. Der Konstruktor und alle zugehörigen Argumenttypen müssen für das Nachschlageobjekt zugänglich sein.
Der angeforderte Typ muss über einen Rückgabetyp verfügen void
. (Dies entspricht der Behandlung von Konstruktortypdeskriptoren.)
Der zurückgegebene Methodenhandle weist die Variable MethodHandle#asVarargsCollector auf, wenn und nur dann, wenn der Variablenvariablen-Modifizierer bit (0x0080
) des Konstruktors festgelegt ist.
Wenn das zurückgegebene Methodenhandle aufgerufen wird, wird die Klasse des Konstruktors initialisiert, sofern sie noch nicht initialisiert wurde.
<b>Beispiel:</b><Blockquote>
{@code
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
...
MethodHandle MH_newArrayList = publicLookup().findConstructor(
ArrayList.class, methodType(void.class, Collection.class));
Collection orig = Arrays.asList("x", "y");
Collection copy = (ArrayList) MH_newArrayList.invokeExact(orig);
assert(orig != copy);
assertEquals(orig, copy);
// a variable-arity constructor:
MethodHandle MH_newProcessBuilder = publicLookup().findConstructor(
ProcessBuilder.class, methodType(void.class, String[].class));
ProcessBuilder pb = (ProcessBuilder)
MH_newProcessBuilder.invoke("x", "y", "z");
assertEquals("[x, y, z]", pb.command().toString());
}
</blockquote>
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.