SORU
3 ŞUBAT 2009, Salı


Nasıl kontrolsüz dökme uyarıları hitap edeyim?

Tutulma beni takip şeklinde bir uyarı veriyor:

Type safety: Unchecked cast from Object to HashMap<String, String>

Bu Nesne döndürür kontrol edemiyorum bir API çağrısı:

HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
  HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
  return theHash;
}

En azından potansiyel bir kod sorunu gösterdiğinden beri teorik olarak Tutulması uyarıları önlemek için mümkünse istiyorum. İyi bir şekilde bu ortadan kaldırmak için henüz, ama bulamadım. Ben özü tek satır yer için bir yöntem ile kendini ve Ekle @SuppressWarnings("işaretli") bu yöntem, böylece sınırlayıcı etkisi olan kod bloğu, nerede uyarıları görmezden. Daha iyi bir seçenek mi? Bu uyarılar Eclipse kapatmak istemiyorum.

Koda gelmeden önce, daha basit, ama hala provoke uyarılar vardı:

HashMap getItems(javax.servlet.http.HttpSession session) {
  HashMap theHash = (HashMap)session.getAttribute("attributeKey");
  return theHash;
}

Sorun uyarı alırsın karma kullanmaya çalıştığınız zaman başka yerdeydi:

HashMap items = getItems(session);
items.put("this", "that");

Type safety: The method put(Object, Object) belongs to the raw type HashMap.  References to generic type HashMap<K,V> should be parameterized.

CEVAP
3 ŞUBAT 2009, Salı


Açık cevap, tabii ki, denetlenmeyen da oyuncu değildir.

Eğer çok gerekliyse, o zaman en azından @SuppressWarnings açıklama kapsamını sınırlamaya çalışın. Javadocs, onun göre yerel değişkenler olabilir; bu şekilde, hatta tüm yöntem etkilemez.

Örnek:

@SuppressWarnings("unchecked")
Map<String, String> myMap = (Map<String, String>) deserializeMap();

Map gerçekten 12 ** genel parametreleri var olup olmadığını belirlemek için bir yolu yoktur. Parametreleri olması gerektiğini önceden bilmek (veya ClassCastException gittiğinde öğrenirsin) gerekir. Bu kod derleyici güvenli olup olmamasına imkan yok, çünkü bir uyarı oluşturur nedeni budur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • grickle

    grickle

    22 AĞUSTOS 2006
  • Matt Steffanina

    Matt Steffan

    1 EYLÜL 2011
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011