Rumah >Java >javaTutorial >Bagaimana Java Mengendalikan Auto Boxing dan Unboxing?
Auto Boxing dan Unboxing di Java: Penjelasan Komprehensif
Penukaran automatik antara jenis data primitif dan kelas pembalut yang sepadan, yang dikenali sebagai auto boxing dan unboxing, telah diperkenalkan dalam Java 5.0. Walaupun ia mudah, memahami kerja dalaman mekanisme ini boleh membingungkan.
Tinju Auto: Mekanisme Berasaskan Pembina
Bertentangan dengan andaian awal, tinju automatik bukanlah hanya bergantung pada pembina. Sebaliknya, kaedah valueOf() kelas pembalut digunakan. Kaedah ini membenarkan caching dan mengelakkan penciptaan objek yang tidak perlu.
Sebagai contoh, pernyataan:
Integer n = 42;
menghimpun kepada:
invokestatic #16 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
Nyah kotak: Mendapatkan semula Nilai Primitif
Nyah kotak mendapatkan semula nilai primitif daripada objek pembalut. Sama seperti tinju auto, kaedah intValue() kelas pembalut digunakan.
Sebagai contoh, pernyataan:
int n = Integer.valueOf(42);
menghimpun kepada:
invokevirtual #22 // Method java/lang/Integer.intValue:()I
Pengecualian kepada Peraturan
Auto tinju dan nyah kotak biasanya berlaku dengan lancar, tetapi terdapat pengecualian. Contohnya, apabila memasukkan nilai bait ke dalam objek Integer, pengkompil melemparkan ralat:
intObject = byteValue; // ==> Error
Had ini timbul kerana kelas pembalut Integer tidak mempunyai pembina dengan parameter bait.
Pertimbangan Lanjut
Spesifikasi Bahasa Java (JLS) perincian auto penukaran tinju dan unboxing dalam §5.1.7 dan §5.1.8, masing-masing. Ia memberikan pemahaman menyeluruh tentang mekanisme asas dan kes tepi.
Atas ialah kandungan terperinci Bagaimana Java Mengendalikan Auto Boxing dan Unboxing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!