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

  • Branboy3

    Branboy3

    12 AĞUSTOS 2012
  • MusicDeluxeTV

    MusicDeluxeT

    14 Mayıs 2010
  • PlugResearch

    PlugResearch

    22 Mart 2006