SORU
18 NİSAN 2013, PERŞEMBE


Başka java ClassCastException atmak ne olabilir?

Bu röportaj bir soru.

Görüşme sona erdi, ama bu soru hala aklımda.

İşi alamadım olarak görüşmeci sormak, yapamam.

Senaryo:

  • sınıf C1 nesne tuşu ile bir önbellek koymak ""

Daha sonra kod:

C1 c1FromCache = (C1) cache.get("a");

Bu kodu bir ClassCastException atar.

Nedenleri neler olabilir?

Çünkü başka biri dedimkoyunbaşka bir aynı anahtar ile nesne ve bu yüzden üzerine. Hayır söylendi, diğer olasılıkları düşünün.

Belki kavanoz tanımlama sınıf C1 bu düğümde kullanılabilir (eğer bu sınıf bir döküm bir sonuç veya bir ClassNotFoundException emin değilim, ama herhangi bir ipucu için şimdi açgözlü davrandım. değil dedim O zaman belki sınıf sürümü yanlış dedim? Sınıf C1 aynı kavanoz bezleri) var dediler.

Ekle/ DüzenleEğer alırsanız sorulan ClassCast atıyordu ama hayır dedi. bundan sonra böyle bir sorunu çözmek için harekete hareketlerini taklit etmek ve daha iyi bir özel durum sonra günlüğü (yığın izleme) vereceğini test jsp düşüş olacağını söylemiştim. soru 2 Bölüm (neden ve eğer bu üretim başına gelseydi ne yapardın)

Herkes başka bir önbellek neden hakkında fikri olan var mıolsundökme sorunu neden olur?

CEVAP
18 NİSAN 2013, PERŞEMBE


Bir nedeni kod parçası nesne ekleme kodu alınıyor daha farklı bir classloader kullanan olabilir.
Bir sınıfın bir örneği aynı sınıf farklı bir classloader tarafından yüklendi çevirebilirsiniz.

Yanıt düzenlemek için:

Eğer bu üretim başına gelseydi ne yapardın?

Bu genellikle okuma ve yazma modülleri aynı kavanoz C1 içeren her zaman olur.
En kapları üst classloader deneyin bu yana ilk ve yerel classloader (. sonra ^em>Üst ilkstrateji), bu sorun için ortak çözüm yerine takılması için en yakın ortak üst sınıf yüklemek ve okuma modülleri.
Eğer üst modül C1 sınıfı içeren modülün taşırsanız, her iki alt modüller üst sınıf, herhangi bir classloader farklılıkları kaldırma almak için zorla.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eisleyhead

    eisleyhead

    11 Ocak 2006
  • FRED

    FRED

    1 EKİM 2005
  • Tech4Geeks

    Tech4Geeks

    8 Ocak 2012