Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question : Creation de nouvelles classes pendant l'execution.

1 réponse
Avatar
Vincent Cantin
Bonjour,

Je voudrais savoir si il est possible de construire des classes au runtime
et de les utiliser juste apres, pendant la meme execution.

Ce que je voudrais faire c'est, a partir d'une liste de champs (i.e. liste
de couples constitues d'un nom de type et d'un nom de variable) et d'un nom
de classe fourni par l'utilisateur de mon programme Java, creer cette classe
et en creer une instance que je vais manipuler par reflection.

C'est possible, ca ?

Vincent

1 réponse

Avatar
Hervé AGNOUX
Vincent Cantin wrote:

Bonjour,

Je voudrais savoir si il est possible de construire des classes au runtime
et de les utiliser juste apres, pendant la meme execution.

Ce que je voudrais faire c'est, a partir d'une liste de champs (i.e. liste
de couples constitues d'un nom de type et d'un nom de variable) et d'un
nom de classe fourni par l'utilisateur de mon programme Java, creer cette
classe et en creer une instance que je vais manipuler par reflection.

C'est possible, ca ?



Oui, il faut utiliser des outils de manipulation du code genre ASM :
http://asm.objectweb.org/

Tu en trouveras d'autres à
http://java-source.net/open-source/bytecode-libraries ou à
http://www.java-channel.org/query.jsp?cids=c_2172

Il y a aussi le constructeur de classes du pauvre, à savoir
java.lang.reflect.Proxy

Tu peux construire avec lui des classes à partir d'interfaces. J'ai commencé
"mon" projet libre sur cette base, pour construire des framework
automatiquement ; j'ai commencé par celui des beans, et je trouve ça pas
mal : à partir d'une simple interface il te construit la classe bean
équivalente, ce qui me parait très pratique ; même si tu modifies
l'interface, toutes les classes dynamique proxy se remettent d'équerre.

Malheureusement, impossible de donner un nom à ces classes ; de toutes
façons cela n'aurait aucun intérêt, il me semble... la classe dynamique
n'existe que le temps de l'exécution du code.

Si ma pub te convient, la chose se trouve à http://active.berlios.de/
Si par dessus le marché cela t'intéresse il vaudra mieux me contacter
directement, car depuis que je suis passé à Netbeans 5, je n'ai plus le
support de SVN, que sur berlios j'emploie svn, et comme on me dit que ce
support svn/netbeans arrivera très rapidement, et que personne ne
s'intéresse vraiment à mon projet, bref, j'attends pour la mise à jour
svn/berlios, alors que j'ai avancé sur le codage.

Et pour ton cas (fin de la pub personnelle) il y a aussi toute la piste des
langages de scripts, tels beanshell ou groovy ou rhino, qui doit être
intéressante.

Etc.



--
Hervé AGNOUX
http://www.diaam-informatique.com