Apabila bekerja dengan Java, menghantar pembolehubah memainkan peranan penting dalam memanipulasi jenis data dan mengakses kaedah objek. Walaupun penting untuk mengetahui masa penghantaran harus digunakan, kerja dalamannya boleh menjadi agak membingungkan, terutamanya apabila berurusan dengan objek.
Penghantaran melibatkan secara jelas memberitahu pengkompil Java bahawa objek jenis generik, seperti Object, sebenarnya adalah contoh jenis yang lebih khusus, seperti MyType. Dengan berbuat demikian, anda mendapat akses kepada kaedah dan sifat khusus jenis itu.
Sebagai contoh, pertimbangkan kod berikut:
Object o = "str"; String str = (String) o;
Dalam contoh ini, pembolehubah o pada mulanya memegang a nilai rentetan. Menghantarnya ke String membolehkan kami mengakses kaedah dan sifat khusus untuk rentetan, seperti length() atau substring(). Proses ini selamat kerana o sememangnya mengandungi nilai rentetan.
Walau bagaimanapun, pemutus boleh tersilap dalam dua senario:
Ralat Pemutus Silang:
Melempar antara objek yang tergolong dalam hierarki warisan yang berbeza adalah dilarang sama sekali dan akan mengakibatkan ralat penyusunan. Contohnya:
String o = "str"; Integer str = (Integer) o; // Compilation fails
ClassCastException Runtime Ralat:
Penghantaran antara objek dalam hierarki warisan yang sama tetapi dengan jenis yang tidak serasi akan mencetuskan ClassCastException pada masa jalan. Ini berlaku apabila anda telah melanggar kepercayaan pengkompil dengan menegaskan bahawa objek adalah daripada jenis tertentu, tetapi ia tidak. Contohnya:
Number o = new Integer(5); Double n = (Double) o; // ClassCastException throws here
Mengapa perlu bersusah payah dengan pemutus? Ia digunakan terutamanya apabila menukar daripada jenis yang lebih umum kepada yang lebih khusus. Sebagai contoh, kerana Integer mewarisi daripada Nombor, Integer boleh disimpan sebagai Nombor tanpa menghantar. Tetapi apabila mendapatkan semula nilai sebagai Integer, pemutus adalah perlu kerana tidak semua Nombor semestinya Integer.
Kini, generik Java telah menggantikan keperluan untuk menghantar dalam banyak situasi. Generik menyediakan keselamatan jenis dan menghapuskan risiko ClassCastExceptions apabila digunakan dengan betul.
Atas ialah kandungan terperinci Bagaimanakah Pemutus Pembolehubah Java Berfungsi, dan Bilakah Ia Boleh Salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!