Soalan:
Dalam fail JAR yang dieksport yang dibuat menggunakan Eclipse, tertentu fail kelas memaparkan nama kelas diikuti dengan tanda dolar dan nombor. Contohnya:
<code class="java">Find.class Find.class Find.class Find.class</code>
Adakah ini akibat daripada pengehadan saiz kod, di mana kelas yang lebih besar dipecahkan kepada beberapa yang lebih kecil? Carian dalam talian yang meluas tidak menghasilkan maklumat yang berkaitan. Bolehkah seseorang memberikan penjelasan?
Jawapan:
Fail kelas tambahan ini adalah hasil daripada kelas dalaman dalam kelas asal. Kelas dalam bersarang dalam kelas luar dan diisytiharkan menggunakan kata kunci kelas:
<code class="java">public class OuterClass { public class InnerClass { // Nested code } }</code>
Apabila kelas yang mengandungi kelas dalam disusun, fail kelas berasingan dijana untuk setiap kelas dalam, mengikut konvensyen penamaan OuterClass$InnerClass .kelas. Kelas dalaman tanpa nama (yang tanpa nama) diberikan pengecam berangka, menghasilkan nama fail seperti OuterClass$1.class.
Bertentangan dengan kepercayaan popular, saiz kelas asal tidak mempengaruhi penciptaan berbilang fail kelas . Kehadiran kelas dalaman adalah satu-satunya sebab untuk tingkah laku ini.
Atas ialah kandungan terperinci Mengapa kelas yang disusun Java dalam fail JAR mempunyai tanda dolar dan nombor dalam nama fail mereka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!