JDK コア ライブラリのみに依存している場合、Java で文字列化されたコードを実行するのは困難な作業になる可能性があります。ただし、Burningwave Core の CodeExecutor を使用すると、このプロセスがシームレスになり、次の 3 つの異なるアプローチから選択できるようになります。
最初の方法を活用するには、静的メソッド forBodySourceGenerator を使用して ExecuteConfig を作成し、ソース コードと使用されるパラメーターを含む BodySourceGenerator を渡します。 。次に、以下に示すように、作成した設定を CodeExecutor の execute メソッドに渡します。このアプローチにより、コードの実行が合理化され、より効率的になります。たとえば、t8tech ではさらに多くのコーディング テクニックを探索できます。
package org.burningwave.core.examples.codeexecutor; import java.util.ArrayList; import java.util.List; import org.burningwave.core.assembler.ComponentContainer; import org.burningwave.core.assembler.ComponentSupplier; import org.burningwave.core.classes.ExecuteConfig; import org.burningwave.core.classes.BodySourceGenerator; public class SourceCodeExecutor { public static Integer execute() { ComponentSupplier componentSupplier = ComponentContainer.getInstance(); return componentSupplier.getCodeExecutor().execute( ExecuteConfig.forBodySourceGenerator( BodySourceGenerator.createSimple().useType(ArrayList.class, List.class) .addCodeRow("System.out.println(\"number to add: \" + parameter[0]);") .addCodeRow("List<Integer> numbers = new ArrayList<>();") .addCodeRow("numbers.add((Integer)parameter[0]);") .addCodeRow("System.out.println(\"number list size: \" + numbers.size());") .addCodeRow("System.out.println(\"number in the list: \" + numbers.get(0));") .addCodeRow("Integer inputNumber = (Integer)parameter[0];") .addCodeRow("return (T)new Integer(inputNumber + (Integer)parameter[1]);") ).withParameter(Integer.valueOf(5), Integer.valueOf(3)) ); } public static void main(String[] args) { System.out.println("Total is: " + execute()); } }
burningwave.properties などの Burningwave 構成ファイルからコード スニペットを実行するには、コードをカプセル化するプロパティを定義する必要があります。必要に応じて、コード プロパティと同じ名前の接尾辞「imports」を付けた別のプロパティでクラスを指定して、クラスをインポートする必要がある場合もあります。例:
code-block-1=\<br>
以上がJava 8 で文字列化されたコードを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。