Rumah >Java >javaTutorial >Bolehkah Berbilang Kelas Java Peringkat Atas dalam Satu Fail Berinteraksi dengan Kod Luaran?
Pengisytiharan Berbilang Kelas dalam Java: Penjelasan Terperinci
Di Java, berbilang kelas peringkat atas boleh wujud bersama dalam satu fail, dengan hanya salah seorang daripada mereka ditetapkan sebagai orang awam. Teknik ini, tanpa nama khusus yang serupa dengan kelas dalam, bersarang atau tanpa nama, mengemukakan dua soalan utama:
1. Adakah kelas menengah ini dihadkan daripada berinteraksi dengan kod di luar unit kompilasinya?
Spesifikasi Bahasa Java (JLS) membenarkan tetapi tidak menguatkuasakan sekatan yang melarang kelas menengah daripada dirujuk oleh kod dalam unit kompilasi lain dalam pakej yang sama. Ini menunjukkan bahawa mereka tidak boleh dianggap sebagai pakej-peribadi.
2. Adakah pelaksanaan Java yang berbeza mengendalikan sekatan ini secara berbeza?
Bertentangan dengan JLS, pengkompil Java javac secara aktif menguatkuasakan had yang secara berkesan tidak menggalakkan rujukan kelas peringkat atas daripada fail luaran melainkan mereka berkongsi nama yang sama dengan fail tempat mereka tinggal.
Terperinci Penjelasan
Batasan ini nyata apabila kelas dalam Fail A cuba mengakses kelas dalam Fail B, di mana Fail B juga mengandungi kelas lain dengan nama yang sama seperti Fail B. Walau bagaimanapun, jika kelas dalam Fail A juga mengakses kelas lain dalam Fail B dengan nama yang sama, ralat kompilasi hilang.
Untuk menggambarkan:
FileA.java:
public class FileA { private FileB fileB; }
FileB.java:
public class FileB { private class FileBClass { } }
Menyusun FileA.java sahaja akan menghasilkan satu ralat:
FileA.java:2: cannot find symbol symbol : class FileBClass location: class FileA
Untuk menyelesaikannya, sama ada FileA.java mesti juga merujuk FileB.java, atau FileB.java mestilah disusun terlebih dahulu.
Kesimpulan
Walaupun tidak dilarang secara eksplisit, had javac yang dikuatkuasakan tidak menggalakkan merujuk kepada kelas peringkat atas daripada fail luaran melainkan mereka berkongsi nama yang sama dengan fail yang mereka tinggal dalam, menjadikan amalan ini tidak praktikal dalam kebanyakan kes.
Atas ialah kandungan terperinci Bolehkah Berbilang Kelas Java Peringkat Atas dalam Satu Fail Berinteraksi dengan Kod Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!