Rumah >Java >javaTutorial >Bolehkah Berbilang Kelas Java Peringkat Atas dalam Satu Fail Berinteraksi dengan Kod Luaran?

Bolehkah Berbilang Kelas Java Peringkat Atas dalam Satu Fail Berinteraksi dengan Kod Luaran?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-06 04:31:10214semak imbas

Can Multiple Top-Level Java Classes in One File Interact with External Code?

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!

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