SORU
17 EYLÜL 2012, PAZARTESİ


Varargs parametre üzerinden potansiyel yığın kirlilik

Bu genel bir tür ile varargs kullanırken Java 7 ile oluşur anlıyorum;

Ama benim sorum

Tam Tutulma "kullanımı öbek kirleten olabilecek mi?" dediğinde ne demek

Ve

Nasıl @SafeVarargs yeni Açıklama Bu engel teşkil ediyor mu?

CEVAP
17 EYLÜL 2012, PAZARTESİ


Yığın kirlilik teknik bir terimdir. İşaret ettikleri nesne değil, bir supertype bir türü olan başvurular ifade eder.

List<A> listOfAs = new ArrayList<>();
List<B> listOfBs = (List<B>)(Object)listOfAs; // points to a list of As

Bu "açıklanamayan" ClassCastException. neden olabilir

// if the heap never gets polluted, this should never throw a CCE
B b = listOfBs.get(0); 

@SafeVarargs Bu hiç engellemez. Ancak, ispat edilebilir yığın kirletmez, derleyici kanıtlamıyorum hangi yöntem vardır. Daha önce böyle bir API arayanlar tamamen anlamsız olduğunu, ama her arama sitesinde bastırılması gerekiyordu o sinir bozucu uyarı. Şimdi API yazarı bir kez beyannamesi yerinde bastırmak.

Eğer bu yöntem gerçekten isedeğilgüvenli, kullanıcılar artık uyarılır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • lifeisforsharingDT

    lifeisforsha

    18 Mayıs 2011
  • newport83

    newport83

    19 HAZİRAN 2006
  • nigahiga

    nigahiga

    21 Temmuz 2006