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]