Hmm, to bude pravda... Pokud potrebujete provest cast() na predka, tak neni
znam za behu, ale pouze pri kompilaci...
Leda tu metodu udelat trosku smart a toho predka si najit, pokud neexistuje,
vratit default, ale zda se mi to spise jako cunarna...
Petr Prochazka
On Tue, Nov 11, 2008 at 3:54 PM, Filip Jirsák <[EMAIL PROTECTED]> wrote:
> 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]
>