Memahami Casting dalam Java
Bagi pengaturcara baru, casting boleh menjadi konsep yang mengelirukan. Walaupun ia difahami masa untuk memanfaatkan pemutus, mekanismenya masih sukar difahami. Artikel ini menyelidiki selok-belok pemutus di Jawa, terutamanya apabila berurusan dengan pemutus objek.
Pemutus dalam Java melibatkan memaklumkan pengkompil bahawa objek jenis A sebenarnya daripada jenis B yang lebih khusus, dengan itu memberikan akses kepada kaedah tambahan. Ia bukan penukaran ajaib, sebaliknya amanah yang diberikan kepada penyusun. Contohnya:
Object o = "str"; String str = (String)o;
Di sini, Objek o sememangnya rentetan, jadi menghantarnya ke rentetan adalah sah. Walau bagaimanapun, dua senario kritikal boleh membawa kepada ralat. Pertama, menghantar antara hierarki warisan yang tidak berkaitan mencetuskan ralat pengkompil:
String o = "str"; Integer str = (Integer)o; //Compilation fails
Kedua, menghantar dalam hierarki yang sama, tetapi dengan jenis sasaran yang tidak sah, menghasilkan ClassCastException pada masa jalan:
Number o = new Integer(5); Double n = (Double)o; //ClassCastException
Pengecualian ini menunjukkan pelanggaran amanah penyusun. Pengaturcara menegaskan bahawa objek itu daripada jenis tertentu, bertentangan dengan realiti.
Penghantaran terutamanya diperlukan apabila beralih daripada jenis umum kepada yang lebih khusus. Sebagai contoh, menghantar Integer kepada Nombor boleh diterima kerana semua Integer ialah Nombor. Generik, yang diperkenalkan dalam Java-5, telah mengurangkan keperluan untuk pemutus dengan menyediakan alternatif yang lebih selamat. Dengan penggunaan generik yang betul, ClassCastException boleh ditiadakan secara praktikal.
Atas ialah kandungan terperinci Bagaimana Casting Berfungsi di Java, dan Bilakah Ia Boleh Berlaku Salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!