MethodHandles.Lookup.FindConstructor(Class, MethodType) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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>
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.