2016-07-08 8 views
0

Java 8のScriptEngineから述語を作成してJavaプログラムに戻すにはどうすればよいですか?NashornエンジンJava 8から述語を作成し返す方法<T>

述語条件は演算子とその比較値であり、数値が良好です。だから私はJavascriptエンジンから以下のようなものを述語を取得したい:

public Predicate<Object> getPredicate(String operator, String value) { 
return Predicate<Object> engine.eval("(i)-> i" + operator + value); 
} 

ここで、オペレータは> =、< =、>することができ、<など これは、実際の問題のちょうど簡単なバージョンです。どのようにしてナショーンから述語を作ることができますか、私はこの後にドライブできるでしょう。

答えて

0

これは動作するはずです:

engine.eval("new java.util.Predicate(function(i) { return i" + operator + value + ";})"); 

はまた、私はあなたが"value"を引用したくなかった、あなたのオリジナルのポストで考えます。

1

私はこのような何かを考える:

public Predicate<Object> getPredicate(final String operator, final String value) { 
    return i -> { 
    Bindings bindings = new Bindings(); 
    bin.put("i", i); 
    bin.put("value", value); 
    return engine.eval("i " + operator + " value", bindings); 
    }; 
} 
+0

新しいバインディング()の "タイプバインディングをインスタンス化できません" – Ajeetkumar

関連する問題