JJ v interfacu HasValue je metoda getValue a zkušebně tam mám i metodu getLabel:

public interface HasValue {

    public Integer getValue();

        public String getLabel();
        
}

Jak říkám, teoreticky s tím problém nemám - jen si to musím oiterovat
sám pomocí JSTL + JSP EL. Jen mě zarazilo, že vyhořel ten tag stripsů
a zajímalo mě proč. Kód, který provádí tu reflexi samozřejmě pod
kontrolou nemám, takže nějaké další opracování (setAccessible nebo
iterace přes předky) nepřichází v úvahu.

Každopádně díky všem za názory - už v tom mám jasněji.

Honza N.

2007/11/26, Josef Cacek <[EMAIL PROTECTED]>:
> Ahojte,
>
> On Nov 26, 2007 4:15 PM, Podlesak Kamil <[EMAIL PROTECTED]> wrote:
>
> > > abstraktni metody fungovat nemusi. Problem je v tom, ze jednotlive
> > > prvky jsou v enumu reprezentovany anonymnimi tridami - tzn. maji
> > > nastaveny default access (package protected).
> >
> >  Jiste, to je to co jsem psal (resp. minil).
> >  A prave proto jsem navrhoval verejne abstaktni metody (public abstract) 
> > primo v samotnem enumu (tj. ve verejnem predkovi tech anonymnich metod). Ty 
> > pak samozrejme lze volat odkudkoliv, protoze deklarace je verejna (public) 
> > ve verejne tride (public). Minimalne to nevadi kompilatoru, s reflexi jsem 
> > si, priznavam, moc nehral.
>
> No prave, ona tam vadi ta reflexe (i v pripade, ze u predka jsou
> abstraktni metody public), protoze nastroje jako beanutils volaji
> nejakou variaci kodu, ktery jsem tu uvedl.
>
> > > instance.getClass().getMethod("getNeco",null).invoke(instance,null);
>
> Otazkou je, proc tam nepouziji to setAccessible().
>
> Abstrakce v nasem prikladu neni nutna, protoze predpokladam, ze v
> interfecu HasValue, ktery to implementovalo, bude uvedena metoda
> getValue().
>
> Z tohoto pohledu funguje bezproblemove konstrukce:
> HasValue.class.getMethod("getValue", null).invoke(instance, null);
>
> V tomto pripade uz se mi ale nevyplati pouzivat reflexi a tu metodu
> bych mel volat primo.
> ((HasValue) instance).getValue();
>
> Nejkorektnejsi by asi bylo podivat se na Classu predka, jestli vraci
> isAccessible() == true a v tom pripade ho pouzit pri volani invoke:
>
> instance.getClass().getEnclosingClass().getMethod("getValue",
> null).invoke(instance, null);
>
> > Kamil Podlesak
>
> -- pepa cacek
>


-- 
--------------------------------------------------------------
Ing. Jan Novotný
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
http://blog.novoj.net
Myšlenky dne otce Fura
--------------------------------------------------------------

Odpovedet emailem