Bagaimana untuk Menyelesaikan ClassCastException di Java?

Bagaimana Untuk Menyelesaikan Classcastexception Di Java



Di Jawa, ' ClassCastException ” membantu mengenal pasti isu keserasian jenis pada masa jalan, dengan membenarkan pembangun menangkapnya pada awal fasa pembangunan. Ia juga memastikan keselamatan jenis, mencegah ketidakkonsistenan dalam program. ClassCastException banyak membantu dalam proses penyahpepijatan, ujian, pemutus jenis yang betul, dsb.

Panduan ini menunjukkan prosedur untuk menyelesaikan ClassCastException dalam Java.







Bagaimana ClassCastException Timbul di Jawa?

' ClassCastException ” memastikan penghantaran jenis yang betul dan menghalang ralat masa jalan yang disebabkan oleh penukaran jenis yang tidak serasi. Secara ringkas, pengecualian ini dilemparkan apabila objek cuba dilemparkan kepada jenis yang tidak serasi.



Sebagai contoh, lawati kod di bawah tentang ' ClassCastException ” di Jawa:



import java.io.* ;
import java.lang.* ;
import java.util.* ;

kelas LinuxHint {
//Penciptaan kelas pemandu
awam statik batal utama ( Tali [ ] args )
{
cubalah {
Objek ibu bapa = baru Objek ( ) ;

Tali anak = ( Tali ) ibu bapa ;
Sistem . keluar . println ( anak ) ;
}
tangkap ( Pengecualian f ) {
Sistem . keluar . println ( f ) ;
}
}
}

Penjelasan kod di atas:





  • Di dalam ' cubalah 'blok, contoh objek' ibu bapa ' diisytiharkan dengan menggunakan ' baru ” kata kunci.
  • Selepas itu, taip digunakan di mana ' objek 'jenis sedang ditaip dan mempunyai nama ' anak ”.
  • Pengecoran taip ini melanggar peraturan bahawa kelas induk tidak boleh dihantar ke kelas anaknya. Itulah sebabnya pengecualian timbul kerana ' objek ” jenis ialah kelas induk.
  • Pada akhirnya, ' tangkap ” blok digunakan yang mengambil masa “ Pengecualian ” sebagai parameter dan mencetak mesej pada konsol.

Selepas tamat fasa pelaksanaan:



Gambar di atas menunjukkan kejadian ClassCastException dalam Java.

Bagaimana untuk Menyelesaikan ClassCastException di Java?

Tiga penyelesaian yang mungkin digunakan yang boleh diselesaikan oleh pembangun dengan mudah atau mengelakkan peluang untuk meningkatkan ' ClassCastException ” di Jawa.

Penyelesaian ini diterangkan di bawah secara berasingan:

Penyelesaian 1: Penggunaan Operator 'instanceof'.

' instanceof ' operator mengesahkan jika ' objek ” ialah contoh jenis yang diingini atau tidak. Pengesahan ini membantu dalam mencegah berlakunya “ ClassCastException ”. Sebagai contoh, lawati blok kod di bawah:

awam kelas TypeCheckingLinuxHint {
awam statik batal utama ( Tali [ ] args ) {

Objek ibu bapa = 'Keluarga LinuxHint' ;
jika ( ibu bapa instanceof Tali ) {
Tali anak = ( Tali ) ibu bapa ;
Sistem . keluar . println ( 'Selepas menaip String: ' + anak ) ;
} lain {
Sistem . keluar . println ( 'Objek ialah contoh jenis String yang diingini.' ) ;
}
}
}

Penjelasan kod di atas:

  • Pertama, ' ibu bapa 'objek dicipta yang dimulakan dengan nilai dummy di dalam ' cubalah ” blok.
  • Kemudian, gunakan “jika” pernyataan di mana “ instanceof operator ' digunakan untuk menyemak contoh ' ibu bapa 'objek dengan yang dikehendaki' Tali ” jenis.
  • Seterusnya, jika keadaan kembali ' benar ” taip dilakukan dan dipaparkan pada konsol.
  • Jika tidak, mesej ralat tersuai dipaparkan pada konsol.

Selepas tamat fasa pelaksanaan:

Gambar menunjukkan bahawa taip telah berjaya dilakukan dan ClassCastException diselesaikan menggunakan ' instanceof ” pengendali.

Penyelesaian 2: Semakan Dan Operasi Taip yang Betul

Penyelesaian lain ialah menyemak kod beberapa kali dan menyemak jenis yang serasi untuk taip. Sebagai contoh, lawati kod di bawah di mana ' ClassCastException ” ditangkap kerana jenis yang diingini tidak serasi untuk taip:

awam kelas TaipCheckLinuxHint {
awam statik batal utama ( Tali [ ] args ) {
Objek ibu bapa = 'Keluarga LinuxHint' ;
Integer convertedNumber = ( Integer ) ibu bapa ;
Sistem . keluar . println ( 'Nombor Selepas Taip: ' + convertedNumber ) ;
}
}

Dalam kod di atas, pengaturcara tersalah menghantar “ Tali ” kepada “ Integer ”.

Selepas tamat fasa penyusunan:

Gambar di atas menunjukkan kejadian ClassCastException.

Penyelesaian 3: Penggunaan Generik

Pengaturcara boleh menggunakan ' generik ” untuk menentukan jenis yang dijangka dan menguatkuasakan keselamatan jenis pada masa penyusunan.

Sebagai contoh, lawati kod di bawah:

import java.util.ArrayList ;
import java.util.List ;

awam kelas menggunakanGenerik {
awam statik batal utama ( Tali [ ] args ) {
Senaraikan < Tali > empName = baru ArrayList <> ( ) ;
empName. Tambah ( 'Harry' ) ;
empName. Tambah ( 'Potter' ) ;

Tali Permulaan = empName. dapatkan ( 0 ) ;
Tali Akhir = empName. dapatkan ( 1 ) ;

Sistem . keluar . println ( 'Nama pertama: ' + Permulaan ) ;
Sistem . keluar . println ( 'Nama kedua: ' + Akhir ) ;
}
}

Penjelasan kod di atas:

  • Pertama, utiliti yang diperlukan diimport ke dalam fail Java, dan kelas ' menggunakanGenerik ” diisytiharkan.
  • Seterusnya, ' ArrayList 'jenis' Tali ” diisytiharkan dengan nama “ empName ” dan dimulakan dengan menyediakan dua elemen data tiruan.
  • Kemudian, buat dua pembolehubah jenis String bernama ' Permulaan ” dan “ Akhir ”. Selepas itu, tetapkan nilai dengan mengakses nombor indeks.
  • Pada akhirnya, paparkan kedua-dua pembolehubah untuk melihat hasilnya.

Selepas tamat pelaksanaan, output kelihatan seperti ini:

Gambar di atas menggambarkan bahawa penuangan taip telah dilakukan dengan menggunakan generik.

Kesimpulan

Untuk menyelesaikan ' ClassCastException ' dalam Java, pengaturcara mesti memastikan keserasian jenis yang betul, penggunaan ' generik ' dan juga ' instanceof ” pengendali. Untuk menyelesaikan pengecualian, pengaturcara mesti menyemak dan membetulkan operasi pemutus dengan memastikan keserasian jenis yang betul. Lebih-lebih lagi, ini ' ClassCastException 'boleh dielakkan dengan menggunakan' generik ” dan dengan menggunakan “ instanceof ” pengendali. Panduan ini telah menunjukkan kaedah untuk menyelesaikan ClassCastException dalam Java.