Java'da ClassCastException Nasıl Çözülür?

Java Da Classcastexception Nasil Cozulur



Java'da “ ClassCastException ”, geliştiricilerin bunları geliştirme aşamasının erken aşamalarında yakalamasına izin vererek çalışma zamanında tür uyumluluğu sorunlarını belirlemeye yardımcı olur. Ayrıca programdaki tutarsızlıkları önleyerek tip güvenliğini sağlar. ClassCastException, hata ayıklama, test etme, doğru tür atama vb. sürecinde çok yardımcı olur.

Bu kılavuz, Java'da ClassCastException'ı çözme prosedürünü gösterir.







ClassCastException Java'da Nasıl Ortaya Çıkıyor?

ClassCastException ”, uygun tip dökümü sağlar ve uyumsuz tip dönüşümlerinden kaynaklanan çalışma zamanı hatalarını önler. Basit bir ifadeyle, bu istisna, bir nesne uyumsuz bir türe dönüştürülmeye çalışıldığında atılır.



Örneğin, “ ile ilgili aşağıdaki kodu ziyaret edin. ClassCastException ” Java'da:



içe aktarmak java.io.* ;
içe aktarmak java.lang.* ;
içe aktarmak java.util.* ;

sınıf Linuxİpucu {
//Sürücü sınıfının oluşturulması
halk statik geçersiz ana ( Sicim [ ] argümanlar )
{
denemek {
Nesne ebeveyn = yeni Nesne ( ) ;

Sicim çocuk = ( Sicim ) ebeveyn ;
sistem . dışarı . yazdır ( çocuk ) ;
}
yakalamak ( İstisna F ) {
sistem . dışarı . yazdır ( F ) ;
}
}
}

Yukarıdaki kodun açıklaması:





  • İçinde ' denemek ” blok, bir nesnenin örneği” ebeveyn ”, “ kullanılarak ilan edilir. yeni ” anahtar kelime.
  • Bundan sonra, “ nesne ” type, typecast ediliyor ve “ ismine sahip çocuk ”.
  • Bu tür belirleme, üst sınıfın alt sınıfına yazılmaması gerektiği kuralını ihlal ediyor. İstisnanın ortaya çıkmasının nedeni budur çünkü “ nesne ” tipi bir üst sınıftır.
  • Sonunda, “ yakalamak ” alan blok kullanılır” İstisna ” parametresi olarak alır ve konsolda bir mesaj yazdırır.

Yürütme aşamasının bitiminden sonra:



Yukarıdaki anlık görüntü, Java'da ClassCastException oluşumunu gösterir.

Java'da ClassCastException Nasıl Çözülür?

Geliştiricinin kolayca çözebileceği veya yükseltme şansını önleyebileceği üç olası çözüm kullanılır. ClassCastException ” Java'da.

Bu çözümler aşağıda ayrı ayrı açıklanmıştır:

1. Çözüm: 'instanceof' Operatörünün Kullanımı

örneği ” operatörü, “ nesne ”, istenen türün bir örneğidir veya değildir. Bu doğrulama, ' ClassCastException ”. Örneğin, aşağıdaki kod bloğunu ziyaret edin:

halk sınıf TypeCheckingLinuxİpucu {
halk statik geçersiz ana ( Sicim [ ] argümanlar ) {

Nesne ebeveyn = 'LinuxHint Ailesi' ;
eğer ( ebeveyn örneği Sicim ) {
Sicim çocuk = ( Sicim ) ebeveyn ;
sistem . dışarı . yazdır ( 'Dize yazdıktan sonra: ' + çocuk ) ;
} başka {
sistem . dışarı . yazdır ( 'Nesne, istenen String türünün bir örneğidir.' ) ;
}
}
}

Yukarıdaki kodun açıklaması:

  • İlk önce ' ebeveyn ' içinde sahte bir değerle başlatılan ' nesnesi oluşturulur. denemek ' engellemek.
  • Ardından, 'eğer' ifadesinde yer alan “ örneği ” operatörü, “ örneğini kontrol etmek için kullanılır. ebeveyn 'istenen nesne' Sicim ' tip.
  • Ardından, koşul ' döndürürse doğru ” typecasting gerçekleştirilir ve konsolda görüntülenir.
  • Aksi takdirde, özel hata mesajı konsolda görüntülenir.

Yürütme aşamasının bitiminden sonra:

Anlık görüntü, tip belirleme işleminin başarıyla yapıldığını ve ClassCastException'ın ' kullanılarak çözüldüğünü gösterir. örneği ' Şebeke.

2. Çözüm: Tip Tahmini İşlemini İnceleyin ve Düzeltin

Başka bir çözüm, kodu birden çok kez kontrol etmek ve yazım için uyumlu türleri gözden geçirmektir. Örneğin, aşağıdaki kodu ziyaret edin, burada “ ClassCastException ” tipleme için istenen uyumsuz bir tür nedeniyle tutuklandı:

halk sınıf TypeCheckLinuxHint {
halk statik geçersiz ana ( Sicim [ ] argümanlar ) {
Nesne ebeveyn = 'LinuxHint Ailesi' ;
tamsayı dönüştürülmüş sayı = ( tamsayı ) ebeveyn ;
sistem . dışarı . yazdır ( 'Tip Tahmininden Sonra Sayı: ' + dönüştürülmüş sayı ) ;
}
}

Yukarıdaki kodda, programcı yanlış bir şekilde “ Sicim ' ile ' tamsayı ”.

Derleme aşamasının bitiminden sonra:

Yukarıdaki anlık görüntü, ClassCastException oluşumunu gösterir.

3. Çözüm: Jeneriklerin Kullanımı

Programcılar kullanabilir ' jenerikler Beklenen türleri belirtmek ve derleme zamanında tür güvenliğini sağlamak için ”.

Örneğin, aşağıdaki kodu ziyaret edin:

içe aktarmak java.util.ArrayList ;
içe aktarmak java.util.List ;

halk sınıf jenerik kullanarak {
halk statik geçersiz ana ( Sicim [ ] argümanlar ) {
Liste < Sicim > empAdı = yeni Dizi Listesi <> ( ) ;
empName. eklemek ( 'Harry' ) ;
empName. eklemek ( 'Çömlekçi' ) ;

Sicim İlk = empName. elde etmek ( 0 ) ;
Sicim son = empName. elde etmek ( 1 ) ;

sistem . dışarı . yazdır ( 'İlk adı: ' + İlk ) ;
sistem . dışarı . yazdır ( 'İkinci isim: ' + son ) ;
}
}

Yukarıdaki kodun açıklaması:

  • İlk olarak, gerekli yardımcı programlar Java dosyasına aktarılır ve bir “ sınıfı jenerik kullanarak ” beyan edilir.
  • Sonra, “ Dizi Listesi ' türü ' Sicim ” ismiyle ilan edilir. empAdı ” ve iki sahte veri öğesi sağlayarak başlatıldı.
  • Ardından, “adlı iki String tipi değişken oluşturun. İlk ' Ve ' son ”. Bundan sonra, dizin numaralarına erişerek değerler atayın.
  • Sonunda, sonucu görmek için her iki değişkeni de görüntüleyin.

Yürütmenin sona ermesinden sonra, çıktı şöyle görünür:

Yukarıdaki anlık görüntü, tür belirleme işleminin jenerikler kullanılarak gerçekleştirildiğini göstermektedir.

Çözüm

çözmek için “ ClassCastException Java'da, programcı uygun tür uyumluluğunu sağlamalıdır, ' jenerikler ' ve ' örneği ' Şebeke. İstisnayı çözmek için, programcının uygun tip uyumluluğunu sağlayarak döküm işlemini gözden geçirmesi ve düzeltmesi gerekir. Üstelik bu “ ClassCastException ' kullanılarak önlenebilir jenerikler ” ve bir “ kullanımıyla örneği ' Şebeke. Bu kılavuz, Java'da ClassCastException'ı çözme yöntemini göstermiştir.