belgelenmiştir, ancak bunu yaparsanız, üçüncü taraf kitaplığından üzerinde% 100 güvenerek ve Java jenerik türleri güvence atarak vardır: o Çalışma zamanında yükseltilen herhangi bir ClassCastException
, doğrudan bir yayınla gerçekleşir. Biz kod güvenli — yazın ve biz bir kara kutu olarak paketin dışında hiçbir arama tedavi kanıtlayabilirim ve içeriği hakkında herhangi bir yorum güvenmeyin sadece
Bizim kodlama standardı uyarıları bastırmak etmektir ham koleksiyonu. Yani bastırma son derece nadirdir. Genellikle kod güvenliyse, derleyici bunu belirleyebilir, ancak bazen ona biraz yardım etmeliyiz. Bazı istisnalar, özel bir bağlamdan "kaçma" olmayan genel tür dizileri içerir.
Üçüncü taraf kitaplığına tam olarak güvenmiyorsanız, yeni bir koleksiyon oluşturun ve içeriği OMEElementImpl
ürününe ekledikten sonra ekleyin. Bu şekilde, eğer kütüphanede bir hata varsa, bir kodun zaman ve uzaklığa uzak olması yerine, bir ClassCastException
ile patlatmak yerine, onu hemen öğreneceksiniz. Örneğin
:
Iterator<?> tmp = detail.getChildElements();
Collection<OMElementImpl> elements = new ArrayList<OMElementImpl>();
while (tmp.hasNext())
elements.add((OMElementImpl) tmp.next()); /* Any type errors found here! */
String innerText = getException(elements.iterator());
hatırla, jenerik güzel görünüyorsun daha az yazar gerektiren kodunu yapmak için icat edilmedi! Jeneriklerin sözü: Kodunuz, uyarı olmadan derlerse, tip güvenlidir. Bu kadar. Uyarılar ihmal edildiğinde veya bastırıldığında, bir operatör olmadan kod gizemli bir şekilde ClassCastException
'u yükseltebilir.
Güncelleme: Bu durumda, özellikle, getChildElements
sonucu OMElementImpl
bir yineleyici olduğunu varsaymak son derece riskli görünüyor. En iyi ihtimalle, bunların OMElement
olduklarını varsayabilir ve bu yalnızca sınıftaki herhangi bir şeyden değil, özellikle sınıftan ima edilir.
Sadece olmak mutlu Java jenerik kodunuzu hiç derlemek için izin verir. Şahsen uyarıyı orada bırakırım - bu tam olarak geçerli bir uyarıdır. –