Dobrý den,

nadhodil jste docela zajímavý problém a jak již někteří upozornili, na takové případy se výborně hodí skriptovací jazyky. Pokud by Vám nevadilo mít na classpath groovy jar, můžete použít následující Java kód:

public Object vytvorPotomka(String parent) throws IllegalAccessException, InstantiationException {
       final GroovyShell shell = new GroovyShell();
       final String code="" +
               "class MyClass extends " + parent + " {" +
               "   public boolean someMethod(){" +
               "       return true;" +
               "   }" +
               "};" +
               "return MyClass";
       return ((Class) shell.evaluate(code)).newInstance();
   }

Pro vlastní novou implementaci dané metody (kód vložený do proměnné code) je potřeba použít jazyk Groovy, což by Vám ale nemělo dělat problémy, protože Groovy má s Javou téměř totožnou syntaxi.

Vašek


Ján Valkovič wrote:
Zdravim,
mozno Vam tento napad nepomoze, ale hned prve co ma v tejto suvislosti napadlo, bolo, ze velmi dobre by sa to dalo riesit cez nejaky skriptovaci jazyk, podla mojich informacii vie java celkom slusne pracovat so skriptovacimi jazykmi ako groovy alebo bsh. V tejto oblasti nemam velke skusenosti, tak dufam, ze som nenapisal absolutnu blbost, ak hej, tak sa ospravedlnujem :-)

S pozdravom
ya

Stöhr Miroslav RNDr. Ph.D.  wrote / napísal(a):
Vážení kolegové,

mám následující problém: Parametr metody mi dodá _string_, který reprezentuje 
classname. Od tohoto classname potřebuji vytvořit v metodě potomka, kterému 
předefinuji jednu metodu, a vrátím jej.

Problém je, jak pro class, ke kterému jsem dostal pouze jméno, vytvořit v metodě potomka -- jde to vůbec?
Příklad: Situace, kdy vím, jaký class mám předefinovat:

public Object vytvorPotomka(){
        Parent p = new Parent(){
                public boolean myMethod(){
                        return someDifferentLogic;
                }
        };
        return p;
}

Problém je v tom, že "Parent" dostanu jako string ... jeho instanci vytvořím, ale jak vytvořit jeho potomka s předefinovanou metodou?
                     Mirek Stöhr



__________ NOD32 3198 (20080618) Information __________

This message was checked by NOD32 antivirus system.
http://www.eset.com

Odpovedet emailem