动态评估逻辑表达式(列表)

问题描述 投票:0回答:1

如何动态评估以下条件。抛出错误。

    List<DummyTwo> list=new ArrayList<DummyTwo>();
    list.add(new DummyTwo(true));
    list.add(new DummyTwo(false));
    list.add(new DummyTwo(false));
    list.add(new DummyTwo(true));

    String condition="((list.get(0).isResult() || list.get(1).isResult()) && list.get(2).isResult())";
    ExpressionParser parser=new SpelExpressionParser();
    Expression e=parser.parseExpression(condition);
    System.out.println(e.getValue());

我需要以这种方式使用条件,因为条件是动态构建的。

java spring spring-el
1个回答
0
投票

看起来我可以使用ScriptManager实现。请建议这是否是最好的方法。

    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
    jsEngine.put("list", list);
    System.out.println(jsEngine.eval(condition));
© www.soinside.com 2019 - 2024. All rights reserved.