我有一个String
例如:
String s= "(resultSet.get(\"PRIMARY_ROLE\")=='COO Business Management Team' && resultSet.get(\"DEPT_LEVEL\")=='5') ? 1:0";
其中resultSet
是map
。
有没有办法可以将它转换为表达式,以便我可以评估它的值。
说:
int i= (resultSet.get("PRIMARY_ROLE")=='COO Business Management Team' && resultSet.get("DEPT_LEVEL")=='5') ? 1:0 ;
答案 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);
}