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