Rumah  >  Artikel  >  Java  >  Mengapa Kelas Dalaman Tidak Statik Tidak Boleh Mempunyai Kaedah Statik dalam Java Sebelum Versi 16?

Mengapa Kelas Dalaman Tidak Statik Tidak Boleh Mempunyai Kaedah Statik dalam Java Sebelum Versi 16?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 02:33:01683semak imbas

Why Couldn't Non-Static Inner Classes Have Static Methods in Java Before Version 16?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn