Sorry, napsal jsem to spatne. Toto:
for (Object object : list) {
@SuppressWarnings("unchecked")
Map<String, Object> map = (Map<String, Object>)object;
// ...
}
projde na Win, ale na Linuxu ne. Toto:
for (Object object : (List<?>)list) { ... }
projde vsude.
Take mne zarazilo, proc to na tom linuxu neprojde, kdyz se typove
parametry odmazavaji. Jo to pripadne JRE bug?
2010/8/10 "Zdeněk Troníček" <[email protected]>:
> Ahoj,
>
> vzdyt tam mas pretypovani na List<?>. Tak si nejsem jisty, jak jsi to
> myslel. Jinak cyklus
>
> for (Employee e : list) {
> ...
> }
>
> bude pred prekladem (ve fazi desuggaring) nahrazen cyklem
>
> for (Iterator<Employee> i = list.iterator(); i.hasNext(); ) {
> Employee e = i.next();
> ...
> }
>
> Tedy cyklus
>
> for (Object o : list) {
> ...
> }
>
> kde list je typu List<Employee> bude nahrazen cyklem
>
> for (Iterator<Employee> i = list.iterator(); i.hasNext(); ) {
> Object o = i.next();
> ...
> }
>
> Po odmazani typovych parametru:
>
> for (Iterator i = list.iterator(); i.hasNext(); ) {
> Object o = i.next();
> ...
> }
>
> Takze podle meho nazoru by to volani melo projit.
>
> Z.
> --
> Zdenek Tronicek
> FIT CTU in Prague
>
>
> Ondra Medek napsal(a):
>> Ahoj,
>>
>> mam metodu
>>
>> protected void process(List<Employee> list) {
>> // ...
>>
>> for (Object object : (List<?>)list) {
>> @SuppressWarnings("unchecked")
>> Map<String, Object> map = (Map<String, Object>)object;
>> // ...
>> }
>> }
>>
>> ovsem za parametr list je misto List<Employee> pouzivan List<HashMap>.
>> Ano, je to prasarna, ale to je ted vedlejsi.
>>
>> na stroji WinXP s
>> java version "1.6.0_18"
>> Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
>> Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
>>
>> to projde, kdezto na Linuxu se stejnou Javou:
>> java version "1.6.0_18"
>> Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
>> Java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed mode)
>>
>> to vyhodi
>>
>> java.lang.ClassCastException: java.util.HashMap cannot be cast to
>> cz.prins.tiger.db.Employee
>>
>> Jen by mne zajimalo, ktere chovani je dobre? BTW. kdyz ten list
>> pretypuju na List<?>, tak to dopadne dobre vsude.
>>
>>
>> --
>> Ondra Medek
>>
>
>
--
Ondra Medek