Bagikan melalui


MethodHandles.Lookup.FindConstructor(Class, MethodType) Metode

Definisi

Menghasilkan handel metode yang membuat objek dan menginisialisasinya, menggunakan konstruktor dari jenis yang ditentukan.

[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

kelas atau antarmuka tempat metode diakses

type
MethodType

jenis metode , dengan argumen penerima dihilangkan, dan jenis pengembalian kekosongan

Mengembalikan

handel metode yang diinginkan

Atribut

Keterangan

Menghasilkan handel metode yang membuat objek dan menginisialisasinya, menggunakan konstruktor dari jenis yang ditentukan. Jenis parameter handel metode akan menjadi jenis konstruktor, sementara jenis pengembalian akan menjadi referensi ke kelas konstruktor. Konstruktor dan semua jenis argumennya harus dapat diakses oleh objek pencarian.

Jenis yang diminta harus memiliki jenis pengembalian .void (Ini konsisten dengan perlakuan JVM terhadap deskriptor jenis konstruktor.)

Handel metode yang dikembalikan akan memiliki aritas variabel MethodHandle#asVarargsCollector jika dan hanya jika bit pengubah aritas variabel konstruktor (0x0080) diatur.

Jika handel metode yang dikembalikan dipanggil, kelas konstruktor akan diinisialisasi, jika belum diinisialisasi.

<b>Contoh:</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>

Dokumentasi Java untuk java.lang.invoke.MethodHandles.Lookup.findConstructor(java.lang.Class<?>, java.lang.invoke.MethodType).

Bagian halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Proyek Sumber Terbuka Android dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Atribusi Creative Commons 2.5.

Berlaku untuk