Maison > Java > javaDidacticiel > le corps du texte

Comment exécuter du code Java stocké dans une variable chaîne ?

Susan Sarandon
Libérer: 2024-10-24 19:27:29
original
444 Les gens l'ont consulté

How to Execute Java Code Stored in a String Variable?

Exécuter du code stocké dans une chaîne

Question :

Peut-on exécuter du code Java qui est stocké dans une variable String ? Est-il possible de convertir une telle chaîne en une instruction Java et de l'exécuter ?

Réponse :

Utilisation de l'API du compilateur

Comme mentionné dans une suggestion précédente, l'API Compiler vous permet de compiler et d'exécuter du code de manière dynamique. Voici comment vous pouvez l'utiliser :

<code class="java">// Create a Java source code string
String javaCode = "...";

// Create a Java compiler instance
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

// Create a source code file from the string
JavaFileObject javaFile = new StringJavaFileObject("MyCode", javaCode);

// Compile the source code
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
Iterable<? extends JavaFileObject> compilationUnits = Collections.singletonList(javaFile);
compiler.getTask(null, null, diagnostics, null, null, compilationUnits).call();

// Execute the compiled code
Class<?> clazz = Class.forName("MyCode");
Method method = clazz.getDeclaredMethod("myMethod");
method.invoke(null);</code>
Copier après la connexion

Utiliser Beanshell

Vous pouvez également utiliser la bibliothèque Beanshell comme suit :

<code class="java">// Create a Beanshell interpreter and add the Java code to it
Interpreter interpreter = new Interpreter();
interpreter.eval(javaCode);

// Access the defined classes and methods in the interpreter
Class<?> myClass = interpreter.getClassLoader().loadClass("MyClass");
Method method = myClass.getDeclaredMethod("myMethod");
method.invoke(null);</code>
Copier après la connexion

Notez que Beanshell n'est plus activement développé mais reste fiable pour les environnements de production.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!