Vra

Wat is die betekenis van die Java waarskuwing?

Tipe veiligheid:Die rolverdeling van Voorwerp na Lys<Geheelgetal> kontroleer eintlik teen die uitgevee tipe Lys

Ek kry hierdie waarskuwing wanneer ek probeer om 'n voorwerp na 'n tipe te gooi met generiese inligting, soos in die volgende kode:

Object object = getMyList();
List<Integer> list = (List<Integer>) object;
Was dit nuttig?

Oplossing

Hierdie waarskuwing is daar omdat Java nie eintlik tipe inligting tydens looptyd stoor in 'n voorwerp wat generiese gebruike gebruik nie.Dus, as object is eintlik a List<String>, daar sal geen ClassCastException tydens looptyd behalwe totdat toegang verkry word tot 'n item vanaf die lys wat nie ooreenstem met die generiese tipe wat in die veranderlike gedefinieer is nie.

Dit kan verdere komplikasies veroorsaak as items by die lys gevoeg word, met hierdie verkeerde generiese tipe inligting.Enige kode wat steeds 'n verwysing na die lys bevat, maar met die korrekte generiese tipe inligting sal nou 'n inkonsekwente lys hê.

Om die waarskuwing te verwyder, probeer:

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

Let egter daarop dat jy nie sekere metodes soos voeg sal kan gebruik nie, want die samesteller weet nie of jy probeer om 'n objek van verkeerde tipe by te voeg nie.Bogenoemde sal in baie situasies werk, maar as jy add, of een of ander soortgelyke beperkte metode moet gebruik, sal jy net die geel onderstreep in Eclipse (of 'n SuppressWarning annotasie).

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top