Question

J'écris un interprète jouet avec un REPL en Java. J'aimerais générer du bytecode à partir du langage et l'exécuter, au lieu d'interpréter un AST et de l'exécuter à la place.

Étant donné que mon Java est un peu rouillé, est-il possible d'exécuter à la volée le code temporel généré sur la machine virtuelle?

Était-ce utile?

La solution

Vous pouvez utiliser java.lang.Classloader.defineClass (), qui convertit le bytecode en objet Class. Vous pouvez appeler newInstance () sur l’objet Class résultant et vous partez.

Autres conseils

Jetez un coup d'œil à Javassist qui contient un compilateur d'extraits vous permettant de compiler des extraits Java en bytecode et les définir en tant que méthode dans une classe que vous pouvez ensuite appeler.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top