Unchecked cast je varovanie, ze pretypovanie nie je v case kompilacie
bezpecne a v case behu mozu vybiehat ClassCastException. Ak ste si
vedomi, ze take nieco za behu nenastane, anotaciou
@SuppressWarnings("unchecked") na metode zrusite ten warning.
Popravde nechapem to pretypovanie na Collection. Kedze
loadCollectionByQuery vracia Collection a getAllZipCodes() vracia tiez
Collection, naco robite
return (Collection) loadCollectionByQuery()
?
Okrem toho, v Jave 5 a novsej by sa idealne mali pouzivat typovane
kolekcie s generikami.
On 7. 2. 2011 10:07, jerzy burzek wrote:
Zdravim konferenciu, skusam sa hrat s generics a narazilo som na jeden
problem, ktoremu velmi nerozumiem. Skusim nacrtnut: mam hierarchiu
tried (JPA, ale to nie je asi podstatne) BaseEntity ZipCode extends
BaseEntity Login extends BaseEntity atd potom mam abstraktnu triedu
BaseManager, ktora implementuje metodu pre nacitanie kolekcie z
databazy: protected Collection loadCollectionByQuery(Class
entityClass, String query, Object[] params) throws DBException..... a
dalsiu triedu LOVManager, a tu mam metodu public
CollectiongetAllZipCodes() throws DBException a tu je problem: ak
napisem nieco taketo: public CollectiongetAllZipCodes() throws
DBException return (Collection)
loadCollectionByQuery(ZipCode.class, "select z from ZipCode z", null);
} prekladac hlasi warning (unchecked cast...), a ked si vypisem
po caste hodnoty v kolekcii, su tam instancie ZipCode, ale hodnoty
atributov id a stamp (ktore su v BaseEntity) su null (???) ked
naspisem toto: public CollectiongetAllZipCodes() throws DBException
Collection tmp = loadCollectionByQuery(ZipCode.class, "select
z from ZipCode z", null); Collectionret = (Collection) tmp;
return tmp; } prekladac sice tiez hlasi warning, ale
instancie ZipCode su uz ok (id aj stamp su != null) Co mi unika?