Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menentukan Derivasi Kelas dengan Generik di Jawa?
<:> Soalan:
Dalam penggunaan projek generik, anda perlu menentukan sama ada objek jenis yang diberikan diberikan kelas generik tertentu. Oleh kerana ciri -ciri generik kelas, penggunaan kaedah
akan gagal.
IsSubclassOf
Contoh:
Pertimbangkan struktur peringkat kelas berikut:
Matlamatnya adalah untuk menentukan sama ada kelas ujian diperolehi daripada GenericClass.
<code class="language-java">public class GenericClass<T> implements GenericInterface<T> { } public class Test extends GenericClass<SomeType> { }</code>Penyelesaian:
Java menyediakan penyelesaian kepada masalah ini. Pertama, kita membuat fungsi praktikal:
Sekarang, untuk memeriksa sama ada ujian diperolehi dari geneclass, sila gunakan kod berikut:
<code class="language-java">static boolean isSubclassOfRawGeneric(Type generic, Type toCheck) { while (toCheck != null && toCheck != Object.class) { Type cur = toCheck instanceof ParameterizedType ? ((ParameterizedType) toCheck).getRawType() : toCheck; if (generic == cur) { return true; } toCheck = toCheck.getSuperclass(); } return false; }</code>Kaedah ini akan memeriksa struktur hierarki (termasuk generik) untuk menentukan hubungan warisan. Ia menyediakan penyelesaian yang kuat dan fleksibel. Perhatikan bahawa di sini kita menggunakan secara langsung, kerana kita hanya perlu menentukan sama ada jenis asal dipadankan tanpa mempertimbangkan parameter generik. Dalam versi terdahulu, boleh mengembalikan jenis null atau tidak betul dalam keadaan ini, mengakibatkan kegagalan penghakiman. Versi yang lebih baik lebih dipercayai.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Derivasi Kelas dengan Generik di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!