Freigeben über


MethodHandles.Lookup.FindConstructor(Class, MethodType) Methode

Definition

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>

Java-Dokumentation für java.lang.invoke.MethodHandles.Lookup.findConstructor(java.lang.Class<?>, java.lang.invoke.MethodType).

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.

Gilt für: