Zajímavé, abstraktní metody musí fungovat... jak tu instanci Method získáváte? getMethod() nebo getDeclaredMethod()? Důležité je, že se musí jednat o metodu z předka, nikoliv z potomka (interní třídy).
Kamil Podlešák > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Behalf Of Ing. Jan Novotný > Sent: Monday, November 26, 2007 2:53 PM > To: Java > Subject: Re: IllegalAccessException pri pokusu prístupu na > getter Enumu > reflexí > > > Díky za nakopnutí, tohle se trefilo do černého - alespoň co se týká > zdůvodnění. Když jsem v debug režimu manuálně nastavil metodě > setAccessible(true), už invoke() prošlo bez chyby a vrátilo to, co > mělo. Bohužel doplnění abstraktní metody do QueryStatus nepomohlo a > bez setAccessible(true) se k danému getteru nedostanu - pro úplnost > uvádím aktualizovanou třídu: > > public enum QueryStatus implements HasValue { > INSERTED { > public Integer getValue() { return 0; } > public String getLabel() { return "vloženo"; } > }, > ALLOWED { > public Integer getValue() { return 1; } > public String getLabel() { return "schváleno"; } > }, > FORBIDDEN { > public Integer getValue() { return 2; } > public String getLabel() { return "zamítnuto"; } > }; > > public abstract String getLabel(); > > } > > Navíc jsem objevil, že Stripes mají tag <stripes:options-enumeration/> > u kterého jsem si myslel, že bude natvrdo nastavováno setAccessible, > ale není tomu tak - padá to na IllegalAccess také. > > Zkusím ještě popátrat na gůglu. > > Honza N. > > 2007/11/26, Podlesak Kamil <[EMAIL PROTECTED]>: > > > > Myslim ze bude stacit doplnit deklaraci tech metod v > samotne tride QueryStatus (jako abstraktni metody). > > > > > public enum QueryStatus implements HasValue { > > > INSERTED { > > > public Integer getValue() { return 0; } > > > public String getLabel() { return "vloženo"; } > > > }, > > > ALLOWED { > > > public Integer getValue() { return 1; } > > > public String getLabel() { return "schváleno"; } > > > }, > > > FORBIDDEN { > > > public Integer getValue() { return 2; } > > > public String getLabel() { return "zamítnuto"; } > > > } > > > > public abstract Integer getValue(); > > public abstract String getLabel(); > > > } > > > > Jednotlive instance jsou neverejne tridy, tedy je normalne > nelze pouzivat a nelze ani volat metody v nich deklarovane. > Tato omezeni se za normalnich okolnosti kontroluji i pri > pouzivani reflection, ale kontrolu lze vypnout zavolanim > method.setAccessible(true). Nektere knihovny pouzivajicich > reflection toto delaji, coz vysvetluje proc se v nich tento > problem neobjevi (zatimco v jinych ano). > > > > Kamil Podlesak > > -- > > [EMAIL PROTECTED] > > > > > > > -----Original Message----- > > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > Behalf Of Ing. Jan Novotný > > Sent: Monday, November 26, 2007 1:58 PM > > To: Java > > Subject: IllegalAccessException pri pokusu prístupu na getter Enumu > > reflexí > > > > > > Zdravím konferenci, > > > > dokážete někdo vysvětlit proč při přístupu k metodám Java enum > > typu, který mám definován takto: > > > > public enum QueryStatus implements HasValue { > > INSERTED { > > public Integer getValue() { return 0; } > > public String getLabel() { return "vloženo"; } > > }, > > ALLOWED { > > public Integer getValue() { return 1; } > > public String getLabel() { return "schváleno"; } > > }, > > FORBIDDEN { > > public Integer getValue() { return 2; } > > public String getLabel() { return "zamítnuto"; } > > } > > } > > > > vyhazuje java IllegalAccessException? Podaří se mi získat i object > > Method pro danou getter metodu, ale když se zavolá metoda invoke, > > vyletí vyjímka IllegalAccessException. Nějak se mi nepodařilo nic > > vygůglit, tak si nedokážu vysvětlit, kde je problém. > > > > Honza N. > > > > -- > > -------------------------------------------------------------- > > Ing. Jan Novotný > > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > > http://blog.novoj.net > > Myšlenky dne otce Fura > > -------------------------------------------------------------- > > > -- -------------------------------------------------------------- Ing. Jan Novotný @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ http://blog.novoj.net Myšlenky dne otce Fura --------------------------------------------------------------
