Instantiating Generics: Membongkar Rahsia
Dalam bidang pengaturcaraan Java, generik memberikan fleksibiliti yang besar dengan membolehkan pengisytiharan kelas dan kaedah yang boleh beroperasi pada pelbagai jenis data tanpa memerlukan cast jenis eksplisit. Walau bagaimanapun, menginstant objek jenis generik menimbulkan cabaran yang mungkin kelihatan remeh pada pandangan pertama, tetapi kami akan menyelidiki penyelesaian yang membuktikan sebaliknya.
Pertimbangkan pengisytiharan kelas:
public class Abc<T> { public T getInstanceOfT() { // Here's where we aim to create an instance of T and return it. } }
Untuk menjadikan objek jenis T dalam kaedah getInstanceOfT, kita mesti mengatasi kekurangan maklumat tentang parameter jenis sebenar pada masa penyusunan. Java bytecode tidak menyimpan maklumat ini, menjadikannya tidak boleh diakses tanpa peruntukan yang jelas.
Penyelesaian terletak pada menerima keupayaan dinamik Java. Kami boleh mengubah suai kaedah untuk menerima kelas jenis sebenar sebagai hujah:
public class Abc<T> { public T getInstanceOfT(Class<T> aClass) { return aClass.newInstance(); } }
Dengan melepasi kelas jenis sebenar, dicontohkan dalam Kelas
Ingat, membuat instantiating jenis generik memerlukan peruntukan eksplisit jenis sebenar pada masa jalan kerana ia masih tidak diketahui pada masa penyusunan. Menangani cabaran ini membongkar sifat sebenar generik dan berfungsi sebagai bukti kuasa dan kehalusan pengaturcaraan Java.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menonjolkan Objek Jenis Generik di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!