2016-07-08 9 views
0

Java 8에서 ScriptEngine으로부터 술어를 생성하고 Java 프로그램에 반환하는 방법은 무엇입니까?Nashorn 엔진 자바 8에서 술어 <T>을 생성하고 반환하는 방법

조건부 조건은 연산자와 비교 값이며 숫자가 우수합니다. 그래서 아래와 같이에서 자바 스크립트 엔진 무언가의 술어를 얻고 싶었다 :

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

운영자가 될 수 있습니다> =, < =,>, < 등 이 실제 문제의 단지 간단한 버전입니다. Nashorn으로부터 어떻게 술어를 만들 수 있습니까?

답변

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

새로운 Bindings()에 대해 "유형 바인딩을 인스턴스화 할 수 없습니다"라고 말합니다. – Ajeetkumar