Di Jawa, apabila berurusan dengan kelas generik, selalunya perlu untuk menentukan jenis khusus yang dipegang oleh jenis generik masa jalan. Walau bagaimanapun, maklumat jenis generik dipadamkan semasa penyusunan, menjadikannya satu cabaran untuk mengaksesnya secara terus.
Mari kita pertimbangkan contoh:
public class MyGenericClass<T> { public void doSomething() { T instance = (T) thirdPartyLib.create(T.class); } }
Dalam senario ini, T.class akan menghasilkan Ralat literal kelas tidak sah kerana jenis generik T tidak diketahui. Untuk menangani perkara ini, penyelesaian diperlukan.
Satu penyelesaian yang berkesan ialah dengan menghantar jenis sebagai parameter kepada kaedah statik, yang akan memberikan maklumat kelas kepada kelas generik. Berikut ialah contoh:
public class MyGenericClass<T> { private final Class<T> type; public static <U> MyGenericClass<U> createWithClass(Class<U> type) { return new MyGenericClass<>(type); } private MyGenericClass(Class<T> type) { this.type = type; } public void doSomething() { T instance = type.newInstance(); } }
Kaedah ini membolehkan anda menghantar jenis kelas secara eksplisit, memastikan kelas generik mempunyai akses kepada maklumat yang diperlukan. Walaupun penyelesaian ini mungkin bukan penyelesaian yang paling elegan, ia menyediakan cara yang boleh dipercayai untuk menentukan kelas jenis generik pada masa jalan.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Kelas Jenis Generik dalam Java pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!