Dilema Kaedah Statik Kelas Generik
Di Java, mentakrifkan kaedah statik dalam kelas generik boleh menjadi mencabar. Mari kita periksa coretan kod berikut:
class Clazz<T> { static void doIt(T object) { // ... } }
Setelah disusun, kod ini menghadapi ralat: "Tidak boleh membuat rujukan statik kepada jenis bukan statik T." Untuk memahami sebab ralat ini berlaku, kita perlu menyelidiki konsep generik.
Skop Parameter Generik
Parameter generik dalam kelas mewakili jenis yang tidak diketahui semasa penyusunan masa. Mereka menjadi jenis sebenar apabila contoh kelas dibuat. Walau bagaimanapun, kaedah dan medan statik wujud secara bebas daripada sebarang contoh kelas tertentu. Ia dikongsi antara semua kejadian, tanpa mengira jenis parameternya.
Kaedah Statik dan Parameter Generik
Kaedah statik tidak boleh mengakses maklumat khusus tika, termasuk parameter generik. Ini kerana kaedah statik tidak dikaitkan dengan contoh tertentu kelas. Contohnya, kaedah statik doIt() dalam coretan kod tidak boleh mengakses parameter T kerana ia hanya terpakai pada tika kelas.
Mengatasi Isu
Jika tugas yang anda perlukan kaedah statik berkaitan secara khusus dengan contoh kelas generik, anda harus mempertimbangkan untuk mengisytiharkan kaedah dengan parameter T dalam skop contoh. Sebagai alternatif, anda boleh mempertimbangkan untuk mencipta kelas pembantu statik berasingan yang tidak bergantung pada parameter generik T.
Kesimpulan
Dalam Java, kaedah statik tidak boleh merujuk parameter generik dalam kelas kerana kaedah statik dikongsi antara semua kejadian, manakala parameter generik berbeza-beza merentas kejadian. Jika anda memerlukan akses kepada parameter generik dalam kaedah statik anda, anda mesti mereka bentuk semula pelaksanaan anda untuk menggunakan kaedah khusus contoh atau mencipta kelas pembantu yang berasingan.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Parameter Jenis Generik dalam Kaedah Statik Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!