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ş:
Sonar İhlali: Güvenlik - Dizi doğrudan...
Nasıl Hazırda HQL sonuçları ile tip gü...
Alıcı erişim ihlali özel durumlar?...
Böyle büyük mükafat fırlatma işlemi ba...
sizeWithFont yöntem önerilmiyor. bekle...