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

  • Incredible Tutorials

    Incredible T

    27 EKİM 2006
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • STITCHLESS TV how to sew your own style tutorials

    STITCHLESS T

    9 HAZİRAN 2011