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

  • incognitotraveler

    incognitotra

    27 Mayıs 2010
  • Lancome USA

    Lancome USA

    30 HAZİRAN 2009
  • PoreoticsHD

    PoreoticsHD

    22 NİSAN 2010