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

  • Droid Life

    Droid Life

    17 Kasım 2009
  • PamtheBlamofficial

    PamtheBlamof

    31 Aralık 2010
  • Photoshop Pro Help

    Photoshop Pr

    1 Ocak 2007