This warning is there because Java is not actually storing type information at run-time in an object that uses generics. Thus, if object
is actually a List
, there will be no ClassCastException
at run-time except until an item is accessed from the list that doesn't match the generic type defined in the variable.
Acest lucru poate cauza complicații suplimentare dacă elementele sunt adăugate în listă, cu această informație de tip generic incorectă. Orice cod care conține în continuare o referință la listă, dar cu informațiile corecte de tip generic va avea acum o listă inconsistentă.
Pentru a elimina avertismentul, încercați:
List<?> list = (List<?>) object;
Cu toate acestea, rețineți că nu veți putea utiliza anumite metode, cum ar fi adăugați, deoarece compilatorul nu știe dacă încercați să adăugați un obiect de tip incorect. Cele de mai sus vor funcționa într-o mulțime de situații, dar dacă trebuie să utilizați add sau o altă metodă similară, va trebui să suferiți sublinierea galbenă din Eclipse (sau o adnotare SuppressWarning
).