[ _owl_ @ 07.12.2004. 20:07 ] @
Imam jedan deo koda koji vrsi kastovanje neke promenljive (tipa Object) u ArrayList<NekiDrugiTip> i kompajler mi stalno prijavljuje warning na toj liniji koda.
Code:

    ArrayList<NekiDrugiTip> lista=(ArrayList<NekiDrugiTip>)object;

Kada kastovanje stavim u try catcth blok i dalje dobijam isti warning.
Code:

    try {
        ArrayList<NekiDrugiTip> lista=(ArrayList<NekiDrugiTip>)object;
        ...
    } catch (ClassCastException cce) {
    }

Procitao sam Generics Tutorial sa Sun-ovog sajta u kome se pominje ovaj problem ali se ne daje nikakvo resenje.
[ filmil @ 07.12.2004. 22:55 ] @
Citat:
Procitao sam Generics Tutorial sa Sun-ovog sajta u kome se pominje ovaj problem ali se ne daje nikakvo resenje.
Koliko sam video, problem je što JAVA ne može da ti garantuje da je konverzija koju hoćeš moguća.

Da bi konverzija bila moguća, jvm bi morala da prođe kroz sve elemente kolekcije i proveri da li su svi elementi odgovarajućeg tipa, a to je suviše zahtevna operacija da bi bila element jezika; slično kao što nije moguće konverzijom Object[] pretvoriti u NekiTip[]. Rešenje koje drži vodu je da napraviš proceduru koja obavi konverziju, a zavisno šta želiš da napraviš (odn. pod uslovom da ne miksuješ javu 1.5 sa legacy kodom na previše čudan način), može da pomogne i redizajn.

f
[ filmil @ 07.12.2004. 23:03 ] @
Preciznije, citat iz Generics tutorijala (poglavlje 7.2):

Citat:
...similarly, cast such as:

Code:
Collection<String> cstr = (Collection<String>)cs; // unchecked warning


gives an unchecked warning, since this isn't something the run time system is going to check for you.