JSでJAVA式を実行する方法


プロジェクト開発では、式の構成、ユーザー構成式のパラメータ、実行中にパラメータを動的に置き換え、式の結果を計算する必要がある場合があります.もちろん,式のルールを自分で定義し,計算を解析することはできるが,明らかにコード量が大きく拡張しにくい.サードパーティ製のエクスプレッションツールを使用して実装することも考えられます.
ここでは式をJavascriptスクリプトとして構成し、JDKがスクリプトエンジンを搭載して実行することで、迅速に実現し、拡張しやすい目的を達成できます.
 

  
  
  
  
  1. ScriptEngineManager sem = new ScriptEngineManager(); 
  2.          
  3.         //  Map  
  4.         SimpleBindings bindings = new SimpleBindings(); 
  5.  
  6.         bindings.put("param1"new Long(10)); 
  7.         bindings.put("param2"new Long(20)); 
  8.  
  9.         //  JS  
  10.         ScriptEngine engine = sem.getEngineByExtension("js"); 
  11.         engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE); 
  12.  
  13.         try { 
  14.              
  15.             //   
  16.             Object res = engine.eval(" res = Math.max(param1 , param2)"); 
  17.             System.out.println(res); 
  18.              
  19.             //   
  20.             String script = "function getMax() " 
  21.                     + "{ return Math.max(param1 , param2)}"
  22.              
  23.             //   
  24.             engine.eval(script); 
  25.              
  26.             //   
  27.             Invocable inv = (Invocable) engine; 
  28.              
  29.             //   
  30.             Object res1 = inv.invokeFunction("getMax"null); 
  31.             System.out.println(res1); 
  32.  
  33.             //   
  34.             Object res2 = engine.eval("param1*4/(param1%2+55)"); 
  35.             System.out.println(res2); 
  36.              
  37.         } catch (Exception ex) { 
  38.             ex.printStackTrace(); 
  39.         }