JSでJAVA式を実行する方法
プロジェクト開発では、式の構成、ユーザー構成式のパラメータ、実行中にパラメータを動的に置き換え、式の結果を計算する必要がある場合があります.もちろん,式のルールを自分で定義し,計算を解析することはできるが,明らかにコード量が大きく拡張しにくい.サードパーティ製のエクスプレッションツールを使用して実装することも考えられます.
ここでは式をJavascriptスクリプトとして構成し、JDKがスクリプトエンジンを搭載して実行することで、迅速に実現し、拡張しやすい目的を達成できます.
ここでは式をJavascriptスクリプトとして構成し、JDKがスクリプトエンジンを搭載して実行することで、迅速に実現し、拡張しやすい目的を達成できます.
- ScriptEngineManager sem = new ScriptEngineManager();
-
- // Map
- SimpleBindings bindings = new SimpleBindings();
-
- bindings.put("param1", new Long(10));
- bindings.put("param2", new Long(20));
-
- // JS
- ScriptEngine engine = sem.getEngineByExtension("js");
- engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
-
- try {
-
- //
- Object res = engine.eval(" res = Math.max(param1 , param2)");
- System.out.println(res);
-
- //
- String script = "function getMax() "
- + "{ return Math.max(param1 , param2)}";
-
- //
- engine.eval(script);
-
- //
- Invocable inv = (Invocable) engine;
-
- //
- Object res1 = inv.invokeFunction("getMax", null);
- System.out.println(res1);
-
- //
- Object res2 = engine.eval("param1*4/(param1%2+55)");
- System.out.println(res2);
-
- } catch (Exception ex) {
- ex.printStackTrace();
- }