SORU
2 Ocak 2015, Cuma


Beklenmeyen tür güvenlik ihlali

Aşağıdaki kodu, görünüşte uyumsuz bir türü için bir dowcast derleme geçer:

public class Item {
  List<Item> items() { return asList(new Item()); }
  Item m = (Item) items();
}

Item List<Item> dökme asla başarılı olabilir çok farklı türleri vardır. Neden derleyici buna izin mi?

CEVAP
2 Ocak 2015, Cuma


List<Item> çok iyi bir Öğe olabilir. Örnek için bkz:

public class Foo extends Item implements List<Item> {
    // implement required methods
}

Bir döküm derleyici söyler: "bu tür bir Öğe bir nesne olduğundan emin olamazsın biliyorum, ama senden daha iyi, bu yüzden lütfen derleme biliyorum". Derleyici yalnızca reddetme derleme eğer imkansız döndürülen nesne için bir örnek Madde (örneğin, Integer hiçbir zaman bir String)

Çalışma zamanında, gerçek nesne yöntemi tarafından döndürülen türü kontrol edilecektir, ve aslında eğer türü Madde bir nesne değil, bir ClassCastException alacaksın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andyabc45

    andyabc45

    1 Mayıs 2011
  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • Nick Pitera

    Nick Pitera

    8 NİSAN 2006