Váš kód ale nebude vždy fungovat. Když T bude List, value bude
ArrayList a defaultValue bude LinkedList, dostanete defaultní hodnotu
(protože přetypování neprojde), měl byste ale dostat zadanou hodnotu
(value).

Podle mne to bez toho třetího parametru nejde, protože typový parametr
je v době běhu neznámý, je znám pouze v době překladu.

Filip Jirsák

2008/11/11 Petr Prochazka <[EMAIL PROTECTED]>:
> IMHO <T extends Object> je zbytecke, jelikoz kazdy objekt od nej dedi ;-)
>
> ale bez Class<T> to jde taky udelat ;-) (alespon Idea nema nic proti)
>
> public static <T extends Collection> T value(Object value, T defValue) {
>   T result;
>   try {
>     //noinspection unchecked
>     result = (T) defValue.getClass().cast(value);
>   } catch (ClassCastException e) {
>     result = defValue;
>   }
>   return result;
> }
>
> Petr Prochazka
>
> 2008/11/11 Ján Valkovič <[EMAIL PROTECTED]>
>>
>> Zdravim,
>> da sa toto:
>> public static <T extends Object>T cast(Object value, T defaultValue,
>> Class<T> type) {
>>        T result;
>>
>>        try {
>>                result = type.cast(value);
>>        } catch(ClassCastException e) {
>>                result = defaultValue;
>>        }
>>
>>        return result;
>> }
>>
>> urobit s prvymi 2 parametrami? Parameter defaultValue uz obsahuje typ T,
>> takze 3. parameter by nemal byt potrebny. Skusal som to urobit s 2, ale
>> nepodarilo sa mi to, tak ma zaujima, ci sa to da, inac to nepotrebujem,
>> zaujima ma to, len preto, ze sa mi to nepodarilo :-)
>>
>> Vdaka (aj za pripadne pripomienky k tym par riadkom kodu)
>>
>> ya
>>
>>
>
>



-- 
Filip Jirsák
[EMAIL PROTECTED]

Odpovedet emailem