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

  • Caroline Martin

    Caroline Mar

    19 EYLÜL 2008
  • Liberator

    Liberator

    14 EYLÜL 2007
  • RyanXLT

    RyanXLT

    22 Ocak 2011