在java中将字符串转换为表达式

时间:2017-12-06 10:26:52

标签: java string hashmap

我有一个String例如:

String s= "(resultSet.get(\"PRIMARY_ROLE\")=='COO Business Management Team' && resultSet.get(\"DEPT_LEVEL\")=='5') ? 1:0";

其中resultSetmap

有没有办法可以将它转换为表达式,以便我可以评估它的值。

说:

int i=  (resultSet.get("PRIMARY_ROLE")=='COO Business Management Team' && resultSet.get("DEPT_LEVEL")=='5') ? 1:0 ;

1 个答案:

答案 0 :(得分:0)

如果每个表达式都是语法正确的JavaScript,那么您可以使用Oracle Nashorn引擎作为JDK的一部分从Java 8开始(以前是Mozilla Rhino):

public static void main(String[] args) throws ScriptException {
    ScriptEngineManager sem = new ScriptEngineManager();
    ScriptEngine se = sem.getEngineByExtension("js");

    String s= "(resultSet.get(\"PRIMARY_ROLE\")=='COO Business Management Team' && resultSet.get(\"DEPT_LEVEL\")=='5') ? 1:0";
    Bindings bindings = se.createBindings();
    bindings.put("resultSet",
            new HashMap<String, String>() {{
                put("PRIMARY_ROLE","COO Business Management Team");
                put("DEPT_LEVEL","5");
            }});

    Object result = se.eval(s, bindings);
    System.out.println("Expression evaluates to "+ result);
}