Bazı Java jenerik atmalarını tip emniyet uyarı anlamı nedir?

oy
61

Anlamı nedir Java uyarı ?

Tür güvenliği: Listesine Nesne dan dökme aslında sildim tip Listesi'nde karşı kontrol ediyor

Böyle aşağıdaki kodda olduğu gibi jenerik bilgilerin yer aldığı bir türe bir nesne döküm denediğimde bu uyarıyı alıyorum:

Object object = getMyList();
List<Integer> list = (List<Integer>) object;
Oluştur 02/08/2008 saat 09:58
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
50

Java aslında generics kullanan bir nesnede çalışma anında türü bilgilerini depolamak olmadığı için bu uyarı var. Böylece, objectaslında bir olduğunu List<String>, hiçbir olacak ClassCastExceptionbir öğe değişkeninde tanımlanan jenerik türüyle eşleşmiyor listeden erişilen kadar dışında çalışma anında.

öğeleri bu yanlış genel tür bilgileri içeren listeye eklenir, bu daha da komplikasyonlara neden olabilir. Herhangi kod hala listesine bir referansa sahip ancak doğru genel tür bilgilerle şimdi tutarsız bir liste olacaktır.

uyarıyı kaldırmak için, deneyin:

List<?> list = (List<?>) object;

Ancak, bu tür yanlış türde bir nesne eklemeye çalışıyorsanız derleyici bilmediği için eklemek gibi bazı yöntemleri kullanmak mümkün olmayacaktır unutmayın. Yukarıdaki durumların bir çok çalışacaktır ancak ekleyebilir veya bazı benzer şekilde sınırlanmış yöntem kullanmak zorunda olmadığını, sadece Eclipse sarı alt çizgi (veya katlanmak zorunda kalacaklarını SuppressWarningek açıklama).

Cevap 02/08/2008 saat 09:58
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more