Mengapa Kaedah Statik Tidak Dibenarkan dalam Kelas Dalaman Bukan Statik
Dalam versi pra-Java 16, cuba mentakrifkan kaedah statik dalam kelas dalaman bukan statik menghasilkan ralat pengkompil. Sekatan ini timbul daripada sifat semula jadi kelas dalam.
Sebab Sekatan
Kelas dalaman bukan statik dikaitkan dengan kejadian kelas tertutupnya. Oleh itu, mereka memerlukan contoh kelas luar untuk wujud sebelum mereka boleh dijadikan instantiated. Kebergantungan ini bermakna kelas dalam bukan statik tidak boleh memiliki kaedah statik, kerana kaedah statik akan kekurangan perkaitan kontekstual yang diperlukan dengan contoh kelas luar.
Kelas Dalaman Statik
Sebaliknya, kelas dalaman statik tidak dilampirkan pada contoh kelas lampirannya. Mereka boleh wujud secara bebas dan tidak memerlukan kelas yang disertakan untuk dijadikan instantiated. Kebebasan ini membenarkan kelas dalaman statik untuk mentakrifkan kaedah statik, kerana ia tidak terikat dengan kejadian khusus kelas lampiran mereka.
Java 16 and Beyond
Java 16 memperkenalkan a tukar kepada sekatan ini. Kelas dalaman kini boleh menentukan kaedah statik tanpa mengira sama ada kaedah statik atau bukan statik. Perubahan ini mencerminkan kesedaran yang semakin meningkat bahawa kaedah statik dalam kelas dalaman tidak semestinya menimbulkan isu konseptual yang sama seperti sebelumnya.
Kesimpulan
Pra-Java 16, ketidakupayaan untuk mentakrifkan kaedah statik dalam kelas dalam bukan statik adalah berdasarkan gandingan yang ketat antara kelas dalam bukan statik dan contoh kelas tertutupnya. Dengan pengenalan Java 16, sekatan ini telah ditarik balik, membolehkan lebih fleksibiliti dalam reka bentuk kelas dalaman.
Atas ialah kandungan terperinci Mengapa Kelas Dalaman Tidak Statik Tidak Boleh Mempunyai Kaedah Statik dalam Java Sebelum Versi 16?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!