Penyataan Kelas Dinamik dengan Parameter Pembina
Dalam pengaturcaraan berorientasikan objek, kadangkala kita mungkin menghadapi situasi di mana kita perlu mencipta contoh a kelas secara dinamik, tanpa mengetahui namanya terlebih dahulu. Ini boleh berguna dalam beberapa senario, seperti pemuatan kelas dinamik, suntikan kebergantungan dan teknik pantulan lanjutan.
Satu senario sedemikian melibatkan mencipta contoh kelas tertentu diberi nama kelasnya sebagai rentetan dan menghantar parameter kepada pembinanya. Ini membolehkan kami membuat instantiate kelas secara dinamik berdasarkan konfigurasi atau maklumat masa jalan lain.
Persoalannya ialah, "Bolehkah kita mencipta contoh kelas tertentu yang diberi nama kelas (dinamik) dan menghantar argumen kepada pembinanya?"
Jawapannya ya, dan begini caranya:
Class<?> clazz = Class.forName(className); Constructor<?> ctor = clazz.getConstructor(String.class); Object object = ctor.newInstance(new Object[] { ctorArgument });
Coretan kod ini menyediakan contoh asas dinamik instansiasi kelas. Ia menggunakan kaedah Class.forName() untuk memuatkan kelas secara dinamik berdasarkan nama kelas yang disediakan, yang sepatutnya termasuk pakej penuh dan laluan kelas.
Selepas memuatkan kelas, ia mendapatkan semula pembina yang dikehendaki menggunakan getConstructor () kaedah, di mana jenis parameter mesti sepadan dengan hujah pembina. Dalam kes ini, kami menganggap argumen rentetan tunggal.
Akhir sekali, kaedah newInstance() mengambil tatasusunan objek untuk membuat instantiate kelas, menghantar argumen yang disediakan kepada pembina.
Perhatikan bahawa contoh ini berfungsi untuk parameter rentetan tunggal. Anda boleh mengubah suainya untuk menyokong berbilang argumen dengan menghantar tatasusunan jenis objek sebagai argumen kepada kaedah getConstructor().
Untuk kelas bersarang, gunakan tanda dolar untuk menunjukkan hierarki bersarang dalam rentetan nama kelas, seperti ditunjukkan dalam contoh yang disediakan.
Atas ialah kandungan terperinci Bolehkah Instalasi Kelas Dinamik Mengendalikan Parameter Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!