2011-11-11 8 views
0

En utilisant javax.tools.JavaCompiler et javax.tools.ToolProvider, je suis en train d'encapsuler une chaîne d'entrée utilisateur (qui devrait être une méthode) avec une classe prédéfinie tout dans une grande chaîne et en l'exécutant dans mon code. Existe-t-il un moyen (dans le même code) d'instancier la classe qui a été compilée (car elle n'existe pas avant l'exécution) pour tester cette fonction avec un ensemble prédéfini de cas? Exemple: L'utilisateur est invité à écrire une méthode qui renvoie le booléen opposé qui lui a été envoyé en tant qu'argument.Java Character IO entre les exécutions java

Types d'utilisateurs dans ladite méthode.

J'enveloppe une classe générique autour de la méthode, et utiliser un ensemble prédéfini de cas de test (true, false) pour vérifier ses fonctionnalités (devrait obtenir de faux, vrai retour)

+0

Classe.forNom? – r0ast3d

+0

@ r0ast3d: Class.forName n'aide que si on stocke la classe quelque part où le chargeur de classe de la classe actuelle recherchera cette classe. –

Répondre

1

Peut-être, en lisant la classe générée en byte[] et en utilisant Classloader.defineClass(..) pour résoudre/construire un objet Class. Pour résoudre correctement la classe, toutes les ressources référencées par cette classe doivent être disponibles pour l'instance de chargeur de classe que vous utilisez. Une fois que vous avez un objet Class, vous pouvez l'instancier et appeler la méthode en utilisant reflection.